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

时间:2018-10-21 17:32:21

标签: c++

我有以下情况。

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
}

)。

为什么不能通过空检查识别出对象已被删除?

1 个答案:

答案 0 :(得分:0)

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

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

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

因此,如果您要采用这种方式,则必须以某种方式自己将指针归零。