拥有myMethod(Thing& a)或myMethod(Thing a)之间的确切区别是什么?因为以后你仍然需要使用& a如果你想要对象的地址..我不知道什么时候使用什么..
答案 0 :(得分:4)
在第一种情况下,您只是将引用传递给单个对象,在第二种情况下,您传递的是对象的副本。
答案 1 :(得分:2)
三个不同之处:
a
,则更改原文,反之亦然。Thing a
,您可以调用复制构造函数。如果复制构造函数必须做很多事情,那么可能会影响代码运行的速度。Thing a
,但您始终可以执行Thing &a
。最后,如果您不打算让调用者能够更改底层对象,那么您应该通过const引用(const Thing &a
)
答案 2 :(得分:0)
第二个创建对象的引用,因此这两行代码是相同的:
void addOne(int &a){
a++;
}
void addOne(int *a){
(*a)++;
}
有和没有&amp;的区别如果没有它,你的变量将被复制(并且你在函数中使用它做的任何事情都将被忽略),并且使用&amp ;,你对函数内部变量所做的任何事情都将在函数之外应用。< / p>