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