2015-06-10 42 views
4
class A { ... }; 
A& getA(); 
A anA = getA(); 

第3行上会发生什么?将参考返回值分配给非参考变量

是否调用了A的拷贝构造函数,从而创建一个独立于函数返回(通过引用)的对象?

+2

是的,只要确保'getA()'不返回本地对象。 –

回答

8

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

是。复制构造函数将源对象的引用作为参数,并且假定复制构造函数执行深度复制,则副本与原始对象无关。