0

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

foo* f = new foo();

现在假设foo有一个方法叫做finalize

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

finalize 是否可以调用析构函数foo并恢复分配的内存new?如果是这样怎么办?

4

3 回答 3

4

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

于 2013-07-25T16:32:34.050 回答
2

与其说是直接调用析构函数,不如说是调用delete this然后调用析构函数。无论哪种方式,答案都是肯定的,因为这种模式在引用计数框架(如 COM)中广泛使用。

于 2013-07-25T16:32:22.597 回答
0

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

所以,

void foo::finalize()
{
     // do something
     this->~foo();
}
于 2013-07-25T16:37:10.417 回答