#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; 
}
 
運行結(jié)果如下:
~D
~B
Press any key to continue

下有了virtual修飾,虛擬析構(gòu)函數(shù)在調(diào)用的時候會釋放子類對象占用的內(nèi)存空間,如果沒有virtual修飾,則只是刪除父類的占用的空間,而不會刪除子類的空間。所以virtual可以防止內(nèi)存泄露。