【发布时间】:2014-08-03 12:35:12
【问题描述】:
我对 C++ 中的对象生命周期有些困惑。假设我有以下代码。首先,我创建指针 MyObject(第 1 行)。然后我创建一个对象并将指针指向它(第 2 行)。然后我修改对象,并将指针指向生成的对象(第 3 行)。最后,我删除了该对象,以避免内存泄漏(第 4 行)。
MyClass * MyObject;
MyObject= new MyClass(x, y);
*MyObject= MyObject-> ModifyObject(z);
delete MyObject;
第 2 行的原始对象是否只是在第 3 行进行了修改? (这意味着上面的代码是安全的)。还是在第 3 行创建了第二个对象,这意味着第 2 行中的第一个对象永远不会被删除,从而造成内存泄漏?
编辑:这是 ModifyObject(z) 的示例
MyClass MyClass::ModifyObject(int z) {
int a = z;
int b = z;
return MyClass(a, b);
}
【问题讨论】:
-
“然后我修改对象,并将指针指向生成的对象(第 3 行)。” -- 不,第 3 行没有这样做。在第 3 行中,您取消引用指针,这意味着您正在调用对象的赋值运算符。指针指向完全相同的位置。
标签: c++ oop object delete-operator