虛析構函式的使用

2022-07-21 02:03:16 字數 505 閱讀 3809

如果乙個類不會用作基類,就不需要使用任何虛函式,因為使用虛函式會增加程式的開銷。但是,如果要作為基類,為維護完整性,就需要使用虛函式,讓子類定義自己的具體行為。  

所以基本的一條是,無故的宣告虛析構函式和永遠不去宣告一樣是錯誤的。  

實際上,很多人這樣總結:當且僅當類裡包含至少乙個虛函式的時候才去宣告虛析構函式。  

至於虛析構函式,c++語言標準關於這個問題的闡述非常清楚:當通過基類的指標去刪除派生類的物件,

而基類又沒有虛析構函式時,結果將是不可確定的.  

析構函式定義為虛函式有何好處?  

1   我們知道"析構函式"的作用就是解除安裝資源,    

2   而虛函式能保證"總是執行實際物件的"那個函式.  

3   所以,我們把析構函式定義為虛函式總能保證物件釋放時總是呼叫"物件自己的函式",  

4   析構函式定義為虛函式的好處就是能避免"資源洩露",更安全.   因此析構函式總是虛函式.因為這樣總不會有錯;否則,你就要處處小心 

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...

C 虛析構函式 純虛析構函式

虛析構函式 析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。因為在c 中,當乙個派生類物件通過使用乙個基類指標刪除,而這個基類有乙個非虛的析構函式,則結果是未定義的。執行時比較有代表性的後果是物件的派生部分不會被銷毀。然...