1定義乙個函式式虛函式是為了允許 用基類的指標來呼叫子類的的這個函式。
比如下面**,這個類的函式呼叫不是在編譯的時候被確定,而是執行的時候被確定。
2根據網上部落格,簡單理解虛函式以及虛函式表。虛函式是根據虛函式表來實現的,這個表分配在例項的記憶體中。虛函式表的指標存在物件例項的最前面的位置,這說明我們可以通過物件例項的位址得到這張虛函式表。然後遍歷其中的函式指標,呼叫相應的函式。#include using namespace std;
class a
這裡是單繼承,繼承圖如下。
2,一般繼承,無覆蓋。
3,一般繼承,有覆蓋。
想驗證的的話 :
C 虛函式問題
1.建構函式中可以呼叫虛函式嗎 可以,只是不會產生動態行為,因為建構函式是從基類開始構造,基類在呼叫虛函式時,子類還未構造,所以呼叫的是基類的函式。2.析構函式可以呼叫虛函式嗎 如果在父類析構函式中呼叫虛函式,其實際呼叫的是子類的函式,而此時子類析構函式已經把資料銷毀了,會出現不可知的結果。3.析構...
c 多型問題(在虛函式裡呼叫虛函式)
最近在看cocos2d x的原始碼,非常感激cocos2d作者的開源精神。在看 的過程中感覺兩個方向讓我受益,1.把之前從書中看到的c 知識,明白了怎麼運用。2.學習作者駕馭 的巧妙方法。看coco2d x的時候我發現了自己對多型之前不了解的知識,廢話少說上 include include usin...
虛函式問題
inline,static,constructor三種函式都不能帶有virtual關鍵字。inline是編譯時展開,必須有實體 static屬於class自己的,也必須有實體 virtual函式基於vtable 記憶體空間 constructor函式如果是virtual的,呼叫時也需要根據vtabl...