C++从对象自己的类中删除对象

C++ deleting a object from it's own class

本文关键字:对象 删除 自己的 C++      更新时间:2023-10-16

我有以下情况。

FooClass* fooPointer = new FooClass();
int main() {
while (/*logic*/) {
if (fooPointer) {
// some logic
}
}
}  
class FooClass {
void fooClass::fooMethod() {
if (/*logic*/) {
//logic
delete this;
}     
}
}

所以我基本上删除了对象。但是在下一次迭代中,它仍然在 main 方法中输入 if 语句(

if (fooPointer) {
// some logic
}

(。

为什么它无法识别对象已被 null 检查删除?

在对象上调用delete通常要做两件事:

  1. 它调用析构函数
  2. 它释放了对象的内存

不会将任何内容设置为 null,也不会以任何其他方式更改指针的值。这就是为什么您的支票不起作用的原因。

因此,如果你想走这条路,你必须以某种方式自己清空你的指针。