我想知道是否可以从自己的方法调用类的析构函数。 例如,我说我有一个类foo创建
foo* f = new foo();
现在假设foo
有一个名为finalize
void foo::finalize()
{
//do some finalizing code
//Delete the instance;
}
finalize可以调用foo
的析构函数并恢复由new
分配的内存吗?如果是这样的话?
答案 0 :(得分:3)
您可以调用delete this;
从方法中删除对象
答案 1 :(得分:2)
调用析构函数并不是直接调用析构函数,而是调用delete this
然后调用析构函数。无论哪种方式,答案都是肯定的,因为这种模式在COM等参考计数框架中被广泛使用。
答案 2 :(得分:0)
放this->~foo();
将调用foo的析构函数。
所以,
void foo::finalize()
{
// do something
this->~foo();
}