析構設定為虛函式的原因

2021-10-12 08:31:09 字數 404 閱讀 9008

為什麼要將析構函式定義為虛函式呢?由於可以使用父類指標儲存子類物件的首位址,因此當時用父類指標指向子類堆物件時就會出問題。當使用delete釋放物件的空間時,如果析構函式沒有定義為虛函式,那麼編譯器就會按指標的型別呼叫父類的建構函式,從而引發錯誤。而使用了析構函式後,會訪問虛表並呼叫物件的析構函式。實現過程如下:

對於沒有派生和繼承關係 的類結構,是否將析構函式宣告為虛析構函式不會影響到呼叫的過程,但是在編寫析構函式時形成好習慣,無論當前是否有派生或繼承關係,都應將析構宣告為虛析構函式。

析構函式定義為虛函式原因

注 本文內容 於zhice163博文,感謝作者的整理。1.為什麼基類的析構函式是虛函式?在實現多型時,當用基類操作派生類,在析構時防止只析構基類而不析構派生類的狀況發生。下面 網路 源位址 a.第一段 includeusing namespace std class clxbase clxbase ...

析構函式定義為虛函式原因

先看下面一段程式 include using namespace std class person class student public person int main 執行結果 person person student student person person student studen...

析構函式定義為虛函式原因

先看下面一段程式 include using namespace std class person class student public person int main 執行結果 person person student student person person student studen...