给定以下内容:
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/