今天剛學關於c++多型,學了含有虛函式的類的記憶體情況。在多基類的派生類中,其中每個基類都含有虛函式,在這種情況下派生類的記憶體布局是怎麼樣的?
對於多重繼承,有多少基類含有與派生類同名函式虛函式,派生類中就會存在多少個虛函式表和虛函式表指標,編譯器會把第乙個基類的虛函式表指標存放在派生類的起始位址,把第二個基類的虛函式表指標緊挨著第乙個虛函式表指標存放,一次類推,直到存放完所有基類的虛函式表指標。
下面通過**說明:
#include
using namespace std;
typedef void (*fun)(); //定義乙個函式指標型別
class base;
class base2;
int main(int argc, char const *argv)
輸出結果是:
fun child
base fun2
base disconstructor
fun child
funbase22
此篇文章是本人參考書上和老師上課講的知識總結出來的,如有錯的地方,歡迎指出
多重繼承 派生類
作 者 劉慧豔 完成日期 2014 年6月20日 版 本 號 v1.0 問題描述 分別宣告teacher 教師 類和cadre 幹部 類,採用多重繼承方式 由這兩個類派生出新類teacher cadre 教師兼幹部 類。要求 1 在兩個基類中都包含姓名 年齡 性別 位址 等資料成員。2 在teach...
C 虛繼承派生類建構函式的寫法
普通的繼承中,我們可以在當前類 c 建構函式的初始化表中指明如何去構造直接父類 b 然後在該父類 b 建構函式的初始化表中指明如何構造祖先類 a class a a int d data d private int data class b public a b int x a x class c ...
C 派生類函式過載與虛函式繼承詳解
目錄 二 同名函式隱藏與虛函式覆蓋 類的關係圖 派生類的作用域巢狀在基類之內 bulk quote bulk cout bulk.isbn 名字isbn解析過程 成員名字的查詢型別由靜態型別決定 給disc quote新增乙個成員,返回折扣政策 class disc quote public quo...