#include<iostream>
using namespace std;
//父类
class Base
public:
    
virtual ~Base()
    
{
        cout
<<"~B"<<endl;
    }

}
 ;
//子类
class Derived:public Base
public:
    
virtual ~Derived()
    
{
        cout
<<"~D"<<endl;
    }

}
 ;
void main ()
    Base 
*b=new Derived();
    delete b; 
}
 
运行结果如下:
~D
~B
Press any key to continue

下有了virtual修饰,虚拟析构函数在调用的时候会释放子类对象占用的内存空间,如果没有virtual修饰,则只是删除父类的占用的空间,而不会删除子类的空间。所以virtual可以防止内存泄露。