本書是一部介紹C++對象模型知識的書,意在探究C++幕后的秘密,講述C++編譯器的故事。內(nèi)容涉及很多不被常人所知的C++對象內(nèi)部工作原理以及底層的一些具體實現(xiàn)機制方面的知識。
本書共分為7章:
第1章介紹書中范例所涉及的演示環(huán)境搭建、如何創(chuàng)建基本的C++程序,以及對程序進行跟蹤和斷點調(diào)試的方法。
第2章的主題是對象,包括以對象所占內(nèi)存大小為講解切入點詳述對象結(jié)構(gòu)的發(fā)展和演化; 構(gòu)造、拷貝構(gòu)造、移動構(gòu)造函數(shù)語義; 深淺拷貝、成員初始化列表等內(nèi)容。
第3章的主題是虛函數(shù),包括虛函數(shù)表指針、虛函數(shù)表的概念和細節(jié); 更進一步涉及多重繼承的虛函數(shù)表分析和各種輔助工具的講解。
第4章的主題是數(shù)據(jù)語義學,包括類中的數(shù)據(jù)成員布局、數(shù)據(jù)成員存取,涉及單一繼承、單類單繼承、多重繼承等情況下的數(shù)據(jù)成員布局; 二層、三層結(jié)構(gòu)時虛基類表內(nèi)容、與this指針調(diào)整等問題。
第5章的主題是函數(shù)語義學,包括普通成員函數(shù)、虛函數(shù)、靜態(tài)成員函數(shù)調(diào)用方式; 靜態(tài)、動態(tài)綁定以及多態(tài)性的詳細體現(xiàn)分析和析構(gòu)函數(shù)必須是虛函數(shù)原因的著重解釋; 多重繼承第二虛基類詳談、RTTI實現(xiàn)原理、inline函數(shù)細說等內(nèi)容。
第6章的主題是對象構(gòu)造語義學,包括對象構(gòu)造順序,對象復制、析構(gòu)函數(shù)語義; 局部、全局對象的構(gòu)造和析構(gòu),臨時對象詳細探討等內(nèi)容。
第7章的主題是模板實例化語義學,重點對模板的實例化進行了詳細的分析。
這是一本C++進階類圖書,要求學習者具備一定的C++開發(fā)基礎(chǔ),適合作為C++編程人員的參考讀物。
"書中主題 C++對象知識:對象結(jié)構(gòu)的發(fā)展及演化、所占空間、各種構(gòu)造函數(shù)的語義等、成員初始化列表等。 C++虛函數(shù):虛函數(shù)表、虛函數(shù)表指針、多重繼承虛函數(shù)表分析、輔助工具介紹等。 C++數(shù)據(jù)語義:數(shù)據(jù)成員布局和存取、多種繼承關(guān)系下數(shù)據(jù)成員的布局、多層繼承結(jié)構(gòu)時虛基類表內(nèi)容分析、this指針調(diào)整等。 C++函數(shù)語義:成員函數(shù)調(diào)用方式、靜態(tài)動態(tài)綁定、多態(tài)性體現(xiàn)、虛析構(gòu)函數(shù)成因剖析、inline函數(shù)詳解等。 C++對象構(gòu)造語義:對象構(gòu)造順序、對象復制及析構(gòu)語義、局部和全局對象的構(gòu)造與析構(gòu),臨時對象、模板實例化等。 環(huán)境標準 程序可以運行在Visual Studio、g++編譯環(huán)境。書中全部實例通過Visual Studio 2019編譯環(huán)境演示、部分實例也通過g++進行差異化演示。
王健偉 男,1976年9月生,網(wǎng)名狂想(KuangXiang),1995年畢業(yè)于哈爾濱工程大學計算機及應用專業(yè),擁有20多年軟件開發(fā)經(jīng)驗,參與開發(fā)過數(shù)十個實際項目,涉及網(wǎng)絡(luò)通信、網(wǎng)絡(luò)安全、網(wǎng)絡(luò)游戲等領(lǐng)域,具備極其深厚的軟件開發(fā)實戰(zhàn)經(jīng)驗。曾參與創(chuàng)辦深圳知名網(wǎng)絡(luò)安全公司安絡(luò)科技有限公司,是中國首套網(wǎng)絡(luò)安全在線掃描評估系統(tǒng)項目負責人、 同服獨立游戲《冒險之路》制作人。
第1章 演示環(huán)境介紹和準備
1.1 演示環(huán)境搭建說明
1.2 創(chuàng)建 基本的能運行的C++程序
1.3 Visual Studio中程序的調(diào)試方法
第2章 對象
2.1 類對象所占用的空間
2.2 對象結(jié)構(gòu)的發(fā)展和演化
2.3 this指針調(diào)整
2.4 分析obj(目標文件)與構(gòu)造函數(shù)語義
2.5 拷貝構(gòu)造函數(shù)語義與移動構(gòu)造函數(shù)語義
2.5.1 拷貝構(gòu)造函數(shù)語義
2.5.2 移動構(gòu)造函數(shù)語義
2.6 程序轉(zhuǎn)換語義
2.6.1 定義時初始化對象
2.6.2 參數(shù)的初始化
2.6.3 返回值初始化
2.7 程序的優(yōu)化
2.7.1 從開發(fā)者層面的優(yōu)化
2.7.2 從編譯器層面的優(yōu)化
2.8 程序優(yōu)化續(xù)、拷貝構(gòu)造函數(shù)續(xù)與深淺拷貝
2.8.1 程序優(yōu)化續(xù)
2.8.2 拷貝構(gòu)造續(xù)
2.8.3 深淺拷貝
2.9 成員初始化列表
2.9.1 何時必須用成員初始化列表
2.9.2 使用初始化列表的優(yōu)勢
2.9.3 初始化列表的細節(jié)探究
第3章 虛函數(shù)
3.1 虛函數(shù)表指針位置分析
3.2 繼承關(guān)系作用下虛函數(shù)的手工調(diào)用
3.3 虛函數(shù)表分析
3.4 多重繼承虛函數(shù)表分析
3.5 輔助工具與vptr、vtbl創(chuàng)建時機
3.5.1 使用輔助工具查看虛函數(shù)表
3.5.2 虛函數(shù)表的創(chuàng)建時機
3.6 單純的類不純時引發(fā)的虛函數(shù)調(diào)用問題
第4章 數(shù)據(jù)語義學
4.1 數(shù)據(jù)成員綁定時機
4.1.1 成員函數(shù)函數(shù)體的解析時機(整個類定義完畢后)
4.1.2 成員函數(shù)參數(shù)類型的確定時機( 近碰到原則)
4.2 進程內(nèi)存空間布局
4.3 數(shù)據(jù)成員布局
4.3.1 觀察成員變量地址規(guī)律
4.3.2 邊界調(diào)整與字節(jié)對齊
4.3.3 成員變量偏移值的打印
4.4 數(shù)據(jù)成員的存取
4.4.1 靜態(tài)成員變量的存取
4.4.2 非靜態(tài)成員變量的存取
4.5 單一繼承下的數(shù)據(jù)成員布局
4.6 單類單繼承虛函數(shù)下的數(shù)據(jù)成員布局