您的析构函数有一个逻辑错误,因为您打印的副本在
copy
是错误的。
更改此项:
~B(){ std::cout << (copy?"B-destructed":"B-(copy)-destructed") << std::endl;}
为此:
~B(){ std::cout << (copy?"B-(copy)-destructed":"B-destructed") << std::endl;}
现在输出:
B-constructed
B-copy-constructed
A-constructed
B-(copy)-destructed
f over
A-destructed
B-destructed
main over
Order of member constructor and destructor calls
).
该标准是否提到将成员引用绑定到构造函数参数?
对象将占用的存储已分配,或在
对象的生存期已结束,在
可以使用原始对象,但只能以有限的方式使用。对于对象
([basic.stc.dynamic.deallocation]),并使用
不依赖于其值的glvalue定义良好。
Source