通过引用传递复制?

时间:2018-03-24 19:45:47

标签: c++ methods reference

以两个类AB为例,其中B来自A。如果我使用A实现方法,例如:

void sum(A &val)
{
   //do stuff
}

然后,如果我使用类型为sum()的对象调用B,那么:

B b;
sum(b);

这是否会创建b的临时副本?谢谢!

2 个答案:

答案 0 :(得分:1)

  

如果b是B的实例,如果我调用sum(b),是否会生成b的临时副本?

不,它只会引用内存中b的位置。

答案 1 :(得分:1)

不,通过引用传递时没有副本。参数是参数的别名。当(被调用)函数读取或写入参数时,它实际上读取或写入参数本身。在您的情况下,b对象本身。