要永遠記得將析構函數聲明為virtual----><
或許你覺得這句話不一定對,但無需質疑的是這句話是很有用的.
查看下面的例子:
#include#include using namespace std; class B{ public: ~B(){ cout<<"base is destroyed!"<
這個是一個很簡單的例子,輸出是肯定的.但是,再看下面的測試!<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PHByZSBjbGFzcz0="brush:java;">#include
#include using namespace std; class B{ public: ~B(){ cout<<"base is destroyed!"<
因此可以看到,當用一個基類的指針指向一個派生類的對象,直接刪除該指針時,析構函數調用鏈將會遭到破壞.
#include#include using namespace std; class B{ public: virtual ~B(){ cout<<"base is destroyed!"<
因此應該記得將析構函數聲明為virtual,這樣就永遠不用擔心析構函數調用鏈遭到破壞!