我有以下情况。
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
}
)。
为什么不能通过空检查识别出对象已被删除?
答案 0 :(得分:0)
在对象上调用delete
通常可以做两件事:
不不将任何内容设置为null,也不会以任何其他方式更改指针的值。这就是为什么您的支票无法使用的原因。
因此,如果您要采用这种方式,则必须以某种方式自己将指针归零。