从方法内部调用自析构函数

时间:2013-07-25 16:30:28

标签: c++

我想知道是否可以从自己的方法调用类的析构函数。 例如,我说我有一个类foo创建

foo* f = new foo();

现在假设foo有一个名为finalize

的方法
void foo::finalize()
{
   //do some finalizing code
   //Delete the instance;
}

finalize可以调用foo的析构函数并恢复由new分配的内存吗?如果是这样的话?

3 个答案:

答案 0 :(得分:3)

您可以调用delete this;从方法中删除对象

答案 1 :(得分:2)

调用析构函数并不是直接调用析构函数,而是调用delete this然后调用析构函数。无论哪种方式,答案都是肯定的,因为这种模式在COM等参考计数框架中被广泛使用。

答案 2 :(得分:0)

this->~foo();将调用foo的析构函数。

所以,

void foo::finalize()
{
     // do something
     this->~foo();
}