给定以下内容:

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);
}

在对象p生命周期结束时_myPrivate会发生什么?
编辑:我仍然可以使用_myPrivate访问对象p的副本吗?

谢谢!

最佳答案

由于_myPrivate而不是引用,因此在赋值_myPrivate = param中,其值将从引用param指向的任何内容复制过来,在本例中为p中的局部变量some_function()

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



有了以上警告,是的。但确切地说,_myPrivate不能用于访问p的副本;它是一个变量,它包含p(现在已不存在)中的数据副本。

关于c++ - 引用参数生命周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4864022/

10-12 01:34