優點:1. 對於基類指標,當其指向衍生類時,可以完全銷毀所指向的物件。
宣告virtual虛函式的缺點:1. 增加物件大小;
2. 物件不再和其他語言(如c)內的相同宣告有著一樣的結構,因此就不能把它傳遞給其他語言所寫的函式,該物件也就不再具有移植性。
注:1.帶多型性質的基類應該宣告virtual析構函式。任何帶有virtual函式的class必定有乙個virtual虛構函式。因為帶有virtual函式,說明該class要被繼承。
2. 不能繼承帶有「non-virtual析構函式」的class。
3. classes 的設計目的如果不是作為base class 使用,或者不是為了具備多型性,就不應該宣告virtual析構函式。
7 為多型基類宣告virtual析構函式
1 一般情況下,如果class中有乙個函式為virtual時,那個可以認為該class具有多型性質,這時需要把該類的析構函式宣告為virtual性質的,因為如果不宣告為virtual性質的話,基類的析構函式將不被呼叫到,這時當derived class部分析構時,釋放的只是derived class...
條款7 為多型基類宣告virtual析構函式
1.將析構函式宣告為virtual 當我們的類要作為基類的時候我們最好將其析構函式宣告為virtual型別,因為當我們用基類的指標指向乙個派生類,當我們要用基類指標析構掉這個派生類的時候,如果基類的析構函式不是virtual,那麼最終只有基類裡面宣告的變數被析構掉,而派生類裡面的變數很可能沒被析構掉...
條款7 為多型基類 宣告virtual析構函式
1 c 明確指出,當派生類物件經由乙個base class指標被刪除,而該base class帶著乙個non virtual析構函式,其結果未有定義 實際執行時通常發生得是子類物件得derived成分沒有被銷毀,消除這個問題得做法很簡單,給base類乙個虛擬構函式,此後刪除派生類物件就會如你想要得那...