一.無虛繼承
1.單個類,無虛函式
按成員定義的順序排列
b::member1
b::member2
2.單個類,有虛函式
虛表指標在偏移0處
__vfptr
b::member1
b::member2
3.單繼承,無虛函式
先父類,再子類
b::member1
b::member2
d::member1
d::member2
4.單繼承,有虛函式
虛表指標在偏移0處,再父類,再子類
__vfptr
b::member1
b::member2
d::member1
d::member2
5.多繼承,無虛函式
按繼承列表的順序,先所有父類,再子類
a::member1
a::member2
b::member1
b::member2
d::member1
d::member2
6.多繼承,有虛函式
二.有虛繼承
1.單虛繼承,無虛函式
2.單虛繼承,有虛函式
3.菱形繼承,無虛函式
4.菱形繼承,有虛函式
C 類的記憶體結構
摘自jerry19880126 沒有複寫的繼承 複寫的繼承 記憶體分布從父類到子類,依次如下 base中有乙個虛表指標 derivedclass1繼承了base,記憶體排布是先父類後子類。derivedclass2的情況是類似於derivedclass1的。derivedderivedclass,由...
c 類記憶體結構
當乙個c 類被例項化的時候,從記憶體當中會產生一塊關於該類的記憶體區域。那麼,乙個類對應的記憶體是怎麼樣的呢?類裡面有成員變數,有函式,還有虛函式等,具體自己去研究,我這裡只介紹一種方法,可以檢視乙個類的記憶體分布,好記性不如爛筆頭,幫自己記憶了。用vs系列工具的弟兄,我們以vs2008為例,用所有...
C 類記憶體結構分析
本文的目標是闡述清楚 c 的類相關的記憶體結構問題。這個問題對於已經很了解的人來說,太簡單了,這還有必要拿出來與人分享嗎?但對於那些不了解的人,始終有一層窗戶紙不能被捅破,似乎總是不能非常到位的理解本質。本文的闡述過程會分為幾個階段,類與物件的關係,物件到底是什麼,類的函式時如何被處理的,多型是如何...