将引用返回值分配给非引用变量

16
class A { ... };
A& getA();
A anA = getA();

第三行发生了什么?

是否调用了 A 的拷贝构造函数,从而创建了一个与由函数返回(按引用)的对象无关的对象?


3
好的,请确保getA()不返回局部对象。 - Luchian Grigore
1
如果最终会复制一份对象,那么返回一个本地对象有什么问题呢? - simplename
1个回答

16

复制构造函数 A 是否被调用,从而创建一个与函数返回的(通过引用)独立的对象?

是的。复制构造函数以源对象的引用作为参数,并且假设复制构造函数执行深拷贝,则复制是独立于原始对象的。


那么当它是引用变量或非引用变量时,同样的复制构造函数会被调用?编译器如何知道要这样做? - simplename

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接