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有一个值得阅读的条目