C++新經典:對象模型

C++新經典:對象模型

《C++新經典:對象模型》是2020年清華大學出版社出版的圖書,作者是王健偉。

基本介紹

  • 中文名:C++新經典:對象模型
  • 作者:王健偉
  • 出版社清華大學出版社
  • 出版時間:2020年6月1日
  • 定價:79 元
  • ISBN:9787302551263
內容簡介,圖書目錄,

內容簡介

本書是一部介紹C++對象模型知識的書,意在探究C++幕後的秘密,講述C++編譯器的故事。內容涉及很多不被常人所知的C++對象內部工作原理以及底層的一些具體實現機制方面的知識。 本書共分為7章: 第1章介紹書中範例所涉及的演示環境搭建、如何創建基本的C++程式,以及對程式進行跟蹤和斷點調試的方法。 第2章的主題是對象,包括以對象所占記憶體大小為講解切入點詳述對象結構的發展和演化; 構造、拷貝構造、移動構造函式語義; 深淺拷貝、成員初始化列表等內容。 第3章的主題是虛函式,包括虛函式表指針、虛函式表的概念和細節; 更進一步涉及多重繼承的虛函式表分析和各種輔助工具的講解。 第4章的主題是數據語義學,包括類中的數據成員布局、數據成員存取,涉及單一繼承、單類單繼承、多重繼承等情況下的數據成員布局;

圖書目錄

第1章演示環境介紹和準備
1.1演示環境搭建說明
1.2創建最基本的能運行的C++程式
1.3Visual Studio中程式的調試方法
第2章對象
2.1類對象所占用的空間
2.2對象結構的發展和演化
2.3this指針調整
2.4分析obj(目標檔案)與構造函式語義
2.5拷貝構造函式語義與移動構造函式語義
2.5.1拷貝構造函式語義
2.5.2移動構造函式語義
2.6程式轉換語義
2.6.1定義時初始化對象
2.6.2參數的初始化
2.6.3返回值初始化
2.7程式的最佳化
2.7.1從開發者層面的最佳化
2.7.2從編譯器層面的最佳化
2.8程式最佳化續、拷貝構造函式續與深淺拷貝
2.8.1程式最佳化續
2.8.2拷貝構造續
2.8.3深淺拷貝
2.9成員初始化列表
2.9.1何時必須用成員初始化列表
2.9.2使用初始化列表的優勢
2.9.3初始化列表的細節探究
第3章虛函式
3.1虛函式表指針位置分析
3.2繼承關係作用下虛函式的手工調用
3.3虛函式表分析
3.4多重繼承虛函式表分析
3.5輔助工具與vptr、vtbl創建時機
3.5.1使用輔助工具查看虛函式表
3.5.2虛函式表的創建時機
3.6單純的類不純時引發的虛函式調用問題
第4章數據語義學
4.1數據成員綁定時機
4.1.1成員函式函式體的解析時機(整個類定義完畢後)
4.1.2成員函式參數類型的確定時機(最近碰到原則)
4.2進程記憶體空間布局
4.3數據成員布局
4.3.1觀察成員變數地址規律
4.3.2邊界調整與位元組對齊
4.3.3成員變數偏移值的列印
4.4數據成員的存取
4.4.1靜態成員變數的存取
4.4.2非靜態成員變數的存取
4.5單一繼承下的數據成員布局
4.6單類單繼承虛函式下的數據成員布局
4.6.1單個類帶虛函式的數據成員布局
4.6.2單一繼承父類帶虛函式的數據成員布局
4.6.3單一繼承父類不帶虛函式的數據成員布局
4.7多重繼承數據布局與this調整深談
4.7.1單一繼承數據成員布局this指針偏移知識補充
4.7.2多重繼承且父類都帶虛函式的數據成員布局
4.8虛基類問題的提出和初探
4.8.1虛基類(虛繼承/虛派生)問題的提出
4.8.2虛基類初探
4.9兩層結構時虛基類表內容分析
4.9.1虛基類表內容之5~8位元組內容分析
4.9.2各種形式的繼承
4.9.3虛基類表內容之1~4位元組內容分析
4.10三層結構時虛基類表內容分析與虛基類設計原由
4.10.1三層結構時虛基類表內容分析
4.10.2虛基類為什麼這樣設計
4.11成員變數地址、偏移與指針等重申
4.11.1對象成員變數記憶體地址及其指針
4.11.2成員變數的偏移值及其指針
4.11.3成員變數指針和不指向任何成員變數的成員變數指針
第5章函式語義學
5.1普通成員函式調用方式
5.2虛成員函式與靜態成員函式調用方式
5.2.1虛成員函式調用方式
5.2.2靜態成員函式調用方式
5.3虛函式地址問題的vcall引入
5.4靜動態類型、綁定、坑點與多態體現深談
5.4.1靜態類型和動態類型
5.4.2靜態綁定和動態綁定
5.4.3繼承的非虛函式坑
5.4.4虛函式的動態綁定
5.4.5重新定義虛函式的預設參數坑
5.4.6C++中的多態性
5.5單繼承虛函式趣味性測試和回顧
5.5.1單繼承下的虛函式
5.5.2回顧和一些小試驗
5.6多繼承虛函式深釋、第二基類與虛析構必加
5.6.1多繼承下的虛函式
5.6.2如何成功刪除用第二基類指針new出來的子類對象
5.6.3父類非虛析構函式時導致的記憶體泄露演示
5.7多繼承第二基類虛函式支持與虛繼承帶虛函式
5.7.1多重繼承第二基類對虛函式支持的影響(this指針調整作用)
5.7.2虛繼承下的虛函式
5.8RTTI(運行時類型識別)回顧與存儲位置簡介
5.8.1RTTI(運行時類型識別)簡單回顧
5.8.2RTTI實現原理
5.8.3vptr、vtbl與RTTI的 type_info信息創建時機
5.9函式調用與繼承關係性能
5.9.1函式調用中編譯器的循環代碼最佳化
5.9.2繼承關係深度增加,開銷也增加
5.9.3繼承關係深度增加,虛函式導致的開銷增加
5.10指向成員函式的指針和vcall
5.10.1不用類對象能否調用類的虛函式和普通成員函式
5.10.2指向成員函式的指針
5.10.3指向虛成員函式的指針和vcall
5.10.4vcall在繼承關係中的體現
5.11inline函式回顧和擴展
5.11.1inline函式回顧
5.11.2inline擴展
第6章對象構造語義學
6.1繼承體系下的對象構造
6.1.1對象的構造順序
6.1.2虛函式
6.1.3構造函式中對虛函式的調用
6.2對象複製語義學與析構函式語義學
6.2.1對象的默認複製行為
6.2.2拷貝賦值運算符與拷貝構造函式
6.2.3如何禁止對象的拷貝構造和賦值
6.2.4析構函式語義
6.3局部對象、全局對象的構造和析構
6.3.1局部對象的構造和析構
6.3.2全局對象的構造和析構
6.4局部靜態對象、對象數組構造析構和記憶體分配
6.4.1局部靜態對象的構造和析構
6.4.2局部靜態對象數組的記憶體分配
6.5new、delete運算符與記憶體高級話題
6.6臨時性對象的詳細探討
6.6.1拷貝構造函式相關的臨時性對象
6.6.2拷貝賦值運算符相關的臨時性對象
6.6.3直接運算產生的臨時性對象
第7章模板實例化語義學
7.1模板及其實例化詳細分析
7.1.1函式模板
7.1.2類模板的實例化分析
7.1.3多個源檔案中使用類模板
7.2炫技寫法
7.2.1不能被繼承的類
7.2.2類外調用私有虛成員函式
後記

相關詞條

熱門詞條

聯絡我們