虛函式,虛繼承與虛函式表

2021-07-31 08:35:23 字數 390 閱讀 1226

c++實現多型機制 :

模板技術,

rtti

技術,虛函式技術,要麼是試圖做到在編譯時決議,要麼試圖做到執行時決議

1]虛函式==〉帶有virtue關鍵字的函式,並且不帶有=0標誌的

2]虛繼承帶有virtual關鍵字的繼承,基類被稱為虛基類,會在自己物件的例項中產生虛基類指標

虛函式與菱形繼承的問題:

當發生繼承時,如果派生類重寫了基類的虛函式,那麼派生類的物件中會修改基類的虛表,虛表中的函式指標會指向派生類自己重寫的函式,如果派生類沒有重寫基類的虛函式,那麼派生類不會改變那個虛函式的指向只是把它繼承下來。

2]虛繼承解決菱形繼承的問題

虛繼承會使物件儲存乙個相對虛基類的相對偏移量,並且把虛基類的實部儲存一次,使訪問防止二義性

虛繼承與虛函式表

一 虛繼承 1 include iostream using namespace std class bvoid fb class d1 virtual public bvoid fd1 class d2 virtual public bvirtual void vd2 void fd2 class...

虛函式與虛函式表

當類中有虛函式時,類的大小會多4個位元組 多出的這4個位元組是乙個位址,指向一張表,裡面儲存了所有虛函式的位址 虛函式表 class base virtual void function 2 virtual void function 3 class sub public base virtual ...

虛函式與虛函式表

虛函式使用中 為什麼?1 先看虛函式表 虛函式表,簡稱虛表。每乙個有虛函式的類都有這樣乙個東西。實際上記錄了本類中所有虛函式的函式指標,也就是說是個函式指標陣列的起始位置。虛函式表的結構 它是乙個函式指標表,每乙個表項都指向乙個函式。任何乙個包含至少乙個虛函式的類都會有這樣一張表。需要注意的是vta...