天天看點

[C++] 多态類中的虛函數表和虛函數表指針

C++中多态類中的虛函數表和虛函數表指針建立時間

答:1. 虛函數表在編譯期建立,虛函數的位址存放于虛函數表之中

       2.虛函數表指針在運作期建立,也就是構造函數被調用時進行初始化的

C++虛函數表和虛函數表指針與類和對象的關系

如果一個類中含有虛函數,那麼其虛函數表和虛函數指針的歸屬和存儲位置如下所示

對象 存儲位置 建立時間
虛函數表 含有 不含有 隻讀資料段 編譯期間
虛函數表指針 不含有 含有 堆棧段 運作期間

C++虛函數表和虛函數表指針與繼承的關系

答:1. 基類與派生類的虛函數表不是同一個表

if 派生類沒有重寫基類虛函數 && 派生類中沒有新增的虛函數
	派生類虛函數表的内容 = 基類虛函數表的内容
else
	派生類虛函數表的内容 != 基類虛函數表的内容
           

       2. 對于多繼承來說,派生類中虛函數表的個數等于派生類中含有虛函數的基類的個數;對于派生類中新增的虛函數來說,該虛函數位于派生類的第一個虛函數表中

繼續閱讀