Dan*_*tor 2 c++ object-lifetime
鉴于以下内容:
class ParamClass {...};
class MyObject {
public:
void myMethod(ParamClass const& param) { _myPrivate = param; }
private:
ParamClass _myPrivate;
}
[...]
MyObject obj;
void some_function(void)
{
ParamClass p(...);
obj.myMethod(p);
}
Run Code Online (Sandbox Code Playgroud)
在对象p的生命周期结束时_myPrivate会发生什么?编辑:我仍然可以使用_myPrivate访问对象p的副本吗?
谢谢!
担
由于_myPrivate是不参考,在分配_myPrivate = param,其值将被从任何参考复制param点,在这种情况下是局部变量p中some_function().
因此,如果ParamClass正确实现赋值运算符,则代码应该没问题.
我仍然可以使用_myPrivate访问对象p的副本吗?
有了上述警告,是的.但准确地说,_myPrivate不能用来访问副本p; 它是一个包含(现在已经灭绝)数据副本的变量p.