《深度探索C 物件模型》1

2022-07-30 07:42:11 字數 1491 閱讀 4040

c++物件模型:

多重繼承模型示意:

第二章:建構函式 語意學

基類和派生類:

在這裡,很容易理解合成的copy建構函式將vptr指向基類的虛函式表,不然不僅造成資料切割(sliced),函式呼叫也混亂了。

返回值的初始化:

在下述四種情況下必須使用成員初始化列表:

上面的產生臨時string效率很低,修改後可以提高:

在建構函式中可以使用成員函式來對資料成員進行初始化:

這是因為(可以在建構函式中使用成員函式的原因):

簡單來說,編譯器對成員初始化列表的處理:

第三章:data語意學

乙個空class物件佔1位元組:

影響虛繼承類物件大小3因素:

而在visual c++:

類的靜態資料成員,存放在程式的全域性data section。

非靜態資料成員:

將不相干的class湊成一對,並帶有繼承關係(只要繼承不要多型):

將不相干的class湊成一對,並帶有繼承關係(只要繼承不要多型)容易犯錯:

犯第二個錯的原因是編譯器需要保留對齊空間,否則複製時出現覆蓋:

單一繼承含虛函式物件布局:

多重繼承資料布局:

虛擬繼承資料布局:

指向資料成員的指標:

深度探索C 物件模型 1

沒錯。就是這麼愛讀書的乙隻我 我會說是我買多了然後不看覺得可惜嗎。但是這本書倒確實是老師一直推薦讓看。template 過載輸出流,我用的不是很熟練剛好看到,溫習一下 os for int ix 0 ix os關於c 加上封裝後的布局成本 關於非靜態資料成員直接內含在每乙個class object之...

深度探索C 物件模型 (1)關於物件

哎 再開新坑,希望19年能把開的這幾個坑都填上。class 類 class object 類物件 簡單來說,c 物件模型的例項的組成包括下面幾個部分 vtbl 0 指向type info objext vtbl 1 指向析構函式 vtbl 2 指向預設建構函式 繼承關係也可以指定為virtual,即...

深度探索c 物件模型(1) 關於物件

一 c 物件模型 1 nonstatic data members被存於class object內部,static data member static nonstatic function放在class object之外。2 虛函式則使用虛函式表 vtbl 每個object都有virtual fu...