C++對象模型詳解
秦連松
買這商品的人也買了...
-
$2,010$1,910 -
$960$864 -
$550$550 -
$700$665 -
$354並行演算法設計與性能優化
-
$806奔跑吧 Linux 內核
-
$534深入淺出 HTTPS : 從原理到實戰
-
$880$695 -
$1,140$1,083 -
$774$735 -
$708$673 -
$1,700$1,615 -
$594$564 -
$708$673 -
$594$564 -
$1,610$1,530 -
$505極限黑客攻防:CTF 賽題揭秘
-
$419$398 -
$662算法訓練營:海量圖解 + 競賽刷題 (入門篇)
-
$774$735 -
$534$507 -
$407程序員的制勝技
-
$948$901 -
$421CPU 眼裡的 C/C++
-
$534精通現代C++ 11/14/17/20
相關主題
商品描述
本書基於GCC/Clang編譯器深入講解C++對象模型的相關知識,涵蓋C++對象的內部工作原理及底層的匯編實現機制。
本書先介紹對象模型的基本概念,並引入兩個用於研究C++代碼實現的開源工具一cppinsights和 Compiler Explorer。接著,依次講解C++數據語義學,即編譯器如何布局C++對象模型中的數據成 C++函數語義學,包括編譯器如何實現C++中的多態、如何調用虛函數等;C++構造、析構語義學,涉及編譯器對 C++對象的構造和析構方式,包括全局對象和靜態局部變量的構造等內容;C++異常處理,包括GCC中異常處理的實現方式及實踐準則;C++運行時類型識別(RTTI)的實現原理,包括 dynamic_cast算法的具體實現;C++Name Mangling規則,包括GCC對C++代碼中各個名稱的編碼方式。
本書適合有意深入理解C++對象模型、了解C++代碼底層實現的讀者閱讀。閱讀本書需要具備一定的C++基礎知識。
作者簡介
秦連松,碩士畢業於中國科學院大學,曾在百度、字節跳動等公司從事C++開發工作,目前在小米公司從事虛擬機相關的工作。
目錄大綱
第 1 章 概述 1
第 2 章 工具 5
2.1 使用 cppinsights 5
2.2 使用 Compiler Explorer 12
2.3 總結 13
第 3 章 數據語義學 15
3.1 數據成員布局 17
3.2 繼承與數據成員 36
3.3 數據成員的存取 55
3.4 指向成員變量的指針 57
3.5 總結 62
第 4 章 函數語義學 63
4.1 C++函數決議 64
4.2 虛表構造 69
4.3 成員函數的調用方式 79
4.4 虛成員函數的調用方式 89
4.5 指向成員函數的指針 99
4.6 總結 107
第 5 章 構造、析構語義學 109
5.1 對象構造 110
5.2 對象析構 131
5.3 全局對象構造與析構 145
5.4 總結 151
第 6 章 異常處理 155
6.1 C++異常的約定 157
6.2 GCC 中 C++異常的實現 169
6.3 現代 C++中的異常介紹 189
6.4 C++異常的處理 193
6.5 總結 196
第 7 章 運行時類型識別 197
7.1 RTTI 布局 198
7.2 typeid 操作符 206
7.3 dynamic_cast 算法 211
7.4 總結 215
第 8 章 Name Mangling 規則 217
8.1 基本概念 218
8.2 操作符的編碼 222
8.3 一些特殊函數和實體的編碼 224
8.4 類型編碼 227
8.5 表達式編碼 234
8.6 作用域編碼 241
8.7 lambda 表達式編碼 243
8.8 壓縮 246
8.9 總結 251