虚析构函数的用法是什么?

时间:2014-02-14 18:27:54

标签: c++ virtual-destructor

在C ++中编写虚拟析构函数的用法是什么,如下所示:

class CMyObject
{
   CMyObject(void) {};
   virtual ~CMyObject(void) {};
}

3 个答案:

答案 0 :(得分:1)

这样你就可以正确销毁(和解除分配)不同大小的CMyObject子类对象数组。

答案 1 :(得分:1)

虚析构函数允许CMyObject的子类覆盖~CMyObject(void)并正确清理它拥有的任何其他属性。

例如,如果将CMyObject扩展为拥有指向某个数组的指针,并为该数组分配内存,则必须在子类的析构函数中清除它,因为它不会被析构函数处理掉。超类(CMyObject)。

答案 2 :(得分:1)

简单示例:

class Foo {};
class Bar : Foo {};

Foo * obj = new Bar();
delete obj;

在这种情况下,如果没有Foo中的虚拟析构函数,Bar的析构函数将不会被调用,这是一个严重的问题。