参考参数寿命

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的副本吗?

谢谢!

Pét*_*rök 7

由于_myPrivate参考,在分配_myPrivate = param,其值将被从任何参考复制param点,在这种情况下是局部变量psome_function().

因此,如果ParamClass正确实现赋值运算符,则代码应该没问题.

我仍然可以使用_myPrivate访问对象p的副本吗?

有了上述警告,是的.但准确地说,_myPrivate不能用来访问副本p; 它一个包含(现在已经灭绝)数据副本的变量p.