C++中多态類中的虛函數表和虛函數表指針建立時間
答:1. 虛函數表在編譯期建立,虛函數的位址存放于虛函數表之中
2.虛函數表指針在運作期建立,也就是構造函數被調用時進行初始化的
C++虛函數表和虛函數表指針與類和對象的關系
如果一個類中含有虛函數,那麼其虛函數表和虛函數指針的歸屬和存儲位置如下所示
類 | 對象 | 存儲位置 | 建立時間 | |
---|---|---|---|---|
虛函數表 | 含有 | 不含有 | 隻讀資料段 | 編譯期間 |
虛函數表指針 | 不含有 | 含有 | 堆棧段 | 運作期間 |
C++虛函數表和虛函數表指針與繼承的關系
答:1. 基類與派生類的虛函數表不是同一個表
if 派生類沒有重寫基類虛函數 && 派生類中沒有新增的虛函數
派生類虛函數表的内容 = 基類虛函數表的内容
else
派生類虛函數表的内容 != 基類虛函數表的内容
2. 對于多繼承來說,派生類中虛函數表的個數等于派生類中含有虛函數的基類的個數;對于派生類中新增的虛函數來說,該虛函數位于派生類的第一個虛函數表中