#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可以防止內存泄露。