對虛函式的認識

2021-09-01 20:16:30 字數 474 閱讀 5521

可以在繼承類中重寫父類的方法,關鍵字是virtual。

如下**所示,父類是super,繼承類是sub,在sub中,重寫了super的go()方法。

#include using namespace std;

class super

};class sub: public super

};int main()

程式的執行結果如下:

go() called on sub

go() called on super

可見,sub類物件呼叫了重寫的go() 方法。

虛函式的實現原理:

在包含虛函式的類中,會在記憶體中定義一張虛表,這個虛表包含了指向虛方法實現的指標。而每個類定義的物件都包含指向虛表的指標。在父類和繼承類定義的物件中,雖然是呼叫的相同名稱的函式,但兩個物件的這個函式指標指向虛表中不同的位址,所以物件能夠實現不同的方法。

對虛函式 虛表的認識

虛函式 實現多型的機制,多型就是用父型別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。讓父類的指標有 多種形態 一種泛型技術。關鍵字 virtual 虛函式表 此表中,主要是乙個類的虛函式的位址表,這張表解決了繼承 覆蓋的問題,保證其內容真實反映實際的情況。在c 標準規格說明書中...

初步認識虛函式(二)

虛函式是如何做到的 如果你沒有看過 inside the c object model 這本書,但又急切想知道,那你就應該從這裡開始 虛函式是如何做到因物件的不同而呼叫其相應的函式的呢?現在我們就來剖析虛函式。我們先定義兩個類 class a virtual void fun2 class b pu...

對「認識」的認識

很早就想談談關於 認識 的認識。這是乙個巨集大深刻的哲學問題。只是覺得沒有完全思考清楚,還以為觀點有些偏頗,擔心自己沒能力系統論述,就遲遲沒有動筆。但想到談論的問題本身就是乙個偏頗的問題,而且,我始終覺得,問題儘管偏頗,但卻不無道理。所以,提筆寫下這篇文字。正像思想的本質是不安一樣,認識的本質是片面...