C++从对象自己的类中删除对象
C++ deleting a object from it's own class
我有以下情况。
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
通常要做两件事:
- 它调用析构函数
- 它释放了对象的内存
它不会将任何内容设置为 null,也不会以任何其他方式更改指针的值。这就是为什么您的支票不起作用的原因。
因此,如果你想走这条路,你必须以某种方式自己清空你的指针。
相关文章:
- 线程调用的函数对对象删除是否安全?
- 当我使用dynamic_cast并删除对象删除时,析构函数是如何工作的?
- 使用 com 对象删除计划任务
- C 将对象删除为参考
- C样式对象删除的包装器
- 静态映射中动态分配的对象.删除必要的
- C++指向对象删除的指针数组,"Debug assertion failure!"
- 在其成员函数返回之前,将对象删除是不确定的行为吗?
- Python 对象删除检测
- C++安全对象删除
- Qt:RemoveWidget和对象删除
- Qt对象删除导致崩溃
- 删除由两个shared_pointer实例管理的对象(删除其中一个)
- 顶点缓冲区对象(删除进程)opengl
- 设计 -- 按名称或对象删除
- 提升中的异常:进程间,共享内存对象删除
- 使用std::function和std::bind来存储回调并处理对象删除
- 如何使用智能指针防止双重对象删除
- 指针指向对象删除时自动为空
- 对象层次结构中的对象删除责任