在C ++中编写虚拟析构函数的用法是什么,如下所示:
class CMyObject
{
CMyObject(void) {};
virtual ~CMyObject(void) {};
}
答案 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的析构函数将不会被调用,这是一个严重的问题。