gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:43:25 25 4
gpt4 key购买 nike

我有以下情况。

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
}

).

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

最佳答案

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

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

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

所以如果你想走这条路,你必须自己清空你的指针。

关于C++从它自己的类中删除一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com