不要被这个名字吓住,其实他就是普通的析构函数变“虚”了,也就是增加了多态性。它的主要功能就是确保继承体系中的对象正确释放。例子:
class Base
{
public:
virtual ~Base(){}
};
class Derived :public Base
{
public:
Derived()
{
pointer = new int[10];
}
~Derived()
{
delete []pointer;
}
int *pointer;
};
void main()
{
Derived *d = new Derived();
Base *b = d;
delete b;//此处如果没有虚析构函数,则只会调用基类的析构函数,那么派生类中分配的内存就没办法释放,造成泄露。所以,如果发生继承,一定要把基类析构函数定义为虚函数。
}