虛函式的理解

2021-06-19 22:20:44 字數 721 閱讀 6996

#includeusing namespace std;

class a;

virtual ~a();

virtual void print()

};class b:public a;

~b();

void print()

};int main()

之前對虛函式一直一知半解,現在把總結的內容記錄下來。c++的物件導向的乙個特徵就是多型,即一切用指向基類的指標來操作物件。指向基類的指標在操作它的多型時,會根據不同物件,呼叫其相應的函式,前提是這些函式都是虛函式。派生類指標呼叫派生類物件的時候則是正常的情況。

以上**執行的結果如下:

a create

a create

b create

this is a

this is b

a delete

b delete

a delete

可以總結的知識點:1.如果為虛函式,派生類會覆蓋基類的所對應的函式實現。2. 虛析構函式則不會被覆蓋,即delete 基類對應的派生類指標時,先呼叫派生類的析構函式,再呼叫基類的虛析構函式。3. 建構函式不能定義為虛函式。

此時如果生成a a, b b,同時sizeof(a),sizeof(b),結果為4,這是因為虛函式內部實現使用指標,而將virtual去掉的話,結果都是1。

虛函式中「虛」的理解

1 首先回顧一下虛函式的概念 虛函式 不代表一定需要子類去實現,而是可以通過基類的指標呼叫子類的此函式。純虛函式 一定需要子類去實現它,它定義的僅僅是一組行為,擁有純虛函式的類即為抽象類,只能當做基類,無法例項化。2 為什麼叫 虛 函式呢 正是這個函式呼叫的不可 性,而這種不可 性即函式的呼叫在編譯...

理解虛函式

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

關於虛函式的理解

最近突然發現,我對虛函式的理解有些迷茫,在網上查了查,做個個簡要的理解。一般,在c 中,虛函式是用來實現基類和派生類的成員函式的。看著貌似和過載函式相類似,但是兩者確實還是有些區別。首 先,虛函式是用virtual 來修飾這個函式的。一般這樣的情況就是為我們宣告了這個成員函式屬於虛函式,於是我們就可...