如果在C++中删除它会发生什么

hid*_*yat 13 c++ memory this delete-operator

可能重复:
使用"删除此项"删除当前对象是否可以?

我刚刚看到他们delete this;在类函数中完成的一些代码,我知道这不是一个好的设计,但它定义了会发生什么,让我们说这个类总是来自某个地方的指针.是否会以正确的方式删除它?

class A
{
 public:
    void abort() { delete this; }
};

class B
{
    void func() { A* a = new A; a->abort(); }
};
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 17

它在C++中是完全合法的,delete this并且对于某些模式(如智能指针)实际上非常有用.开发人员的负担是确保this在发生删除后确保没有其他方法被调用或在堆栈上访问实例数据.

C++ FAQ Lite有一个值得阅读的条目

  • C++中有很多东西是完全合法的但仍然是个坏主意. (3认同)