虛函式中「虛」的理解

2021-06-29 14:57:50 字數 452 閱讀 9451

1、首先回顧一下虛函式的概念

虛函式:不代表一定需要子類去實現,而是可以通過基類的指標呼叫子類的此函式。

純虛函式:一定需要子類去實現它,它定義的僅僅是一組行為,擁有純虛函式的類即為抽象類,只能當做基類,無法例項化。

2、為什麼叫「虛」函式呢

正是這個函式呼叫的不可**性,而這種不可**性即函式的呼叫在編譯階段無法確定,待執行時才能確定函式呼叫的真正位址

3、為什麼當做基類的類的析構函式一定要是「虛函式」?

析構函式執行時先呼叫派生類的析構函式,其次才呼叫基類的析構函式。如果析構函式不是虛函式,而程式執行時又 要

通過基類的指標去銷毀派生類的動態物件,那麼用delete銷毀物件時,只呼叫了基類的析構函式,未呼叫派生類的 析構

函式。這樣會造成銷毀物件不完全、記憶體洩露。

理解虛函式

虛函式聯絡到多型,多型聯絡到繼承。所以本文中都是在繼承層次上做文章。沒了繼承,什麼都沒得談。下面是對c 的虛函式這玩意兒的理解。什麼是虛函式 如果不知道虛函式為何物,但有急切的想知道,那你就應該從這裡開始 簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛函式。虛函式的作用,用專業術語來解釋...

虛函式的理解

includeusing namespace std class a virtual a virtual void print class b public a b void print int main 之前對虛函式一直一知半解,現在把總結的內容記錄下來。c 的物件導向的乙個特徵就是多型,即一切用...

理解虛基類 虛函式與純虛函式的概念

虛基類在說明其作用前先看一段 從 中可以看出類b c都繼承了類a的ivalue成員,因此類b c都有乙個成員變數ivalue 而類d又繼承了b c,這樣類d就有乙個重名的成員 ivalue 乙個是從類b中繼承過來的,乙個是從類c中繼承過來的 在主函式中呼叫d.ivalue 因為類d有乙個重名的成員i...