C 虛函式在記憶體中的實現

2022-04-10 16:52:39 字數 563 閱讀 7699

首先來一張圖,一目了然:

然後把相應的**貼上來:

1

classa2

;1011class b : publica12

;1920class c : publicb21

;

後記:(1)每個類的一開始都是乙個虛函式指標,這個指標指向乙個虛函式表,表中的每一項都是相應的虛函式的指標。

(2)類在繼承的時候,乙個子類的開始就是基類的部分,了解繼承後子類的模型。

(3)vfptr這個指標有範圍的,比如a類的vfptr只能看三個記錄,b的vfptr能看四個記錄,c的vfpr能看五個記錄。這就是多型的時候,父類的指標                 指向子類物件的時候,它看不到子類的資料成員和成員函式(包括子類中的虛函式)。

(4)一般的物件導向的語言多型基本都是這個原理,前面寫了一篇博文,當時說的是基類和派生類的vfptr分開了,其實他們是在一起的,前面之所                 以分開說,是為了敘說方便。

C 虛函式表在記憶體中的位置

by loren zhai 前段時間有人問c 虛函式表儲存在記憶體的什麼位置,下面是除錯的相關資訊。class ca class cb public ca class cd public cb void ca func virtual11 void ca func virtual22 void cb...

C 記憶體劃分與虛函式表在記憶體中的位置

一直都不清楚c 的記憶體具體是怎樣劃分的,只知道大致有堆區 棧區 全域性靜態區 常量區等劃分。如果沒記錯的話,好像還有乙個 區。現在的問題是,c 裡的虛函式是借助虛函式表實現的,含有虛函式的類的物件中有乙個指向虛函式的指標 通常是物件前4個位元組 32位 那麼,虛函式表是儲存在記憶體中的哪個部分中呢...

c 中的虛函式,虛表指標,及類在記憶體中的分布

c 中虛函式的呼叫及物件的內部布局1 來自 lizhe1985 在我那篇 c 中的this指標 中,我通過分析c 編譯後生成的彙編 來分 析this指標的實現方法。這次我依然用分析c 編譯後生成的彙編 來說明c 中 虛函式呼叫的實現方法,順便也說明一下c 中的物件內部布局。下面所有的彙編 都 是用v...