
秦連松
本書基於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++基礎知識。
我覺得本書寫的太過於學術化了,真正開發過程中用到的知識只佔30%不到,大部分都完全用不上。但你要說他寫的真的很全很到位的話,很多地方又講的不夠清楚,明白,比如在計算有虛繼承,虛函數的類大小時,舉例子的時候又不說清楚是怎麼算的,只說結果難以閱讀。總之在我看來,這本書可讀性差,實用性更差。斷續看了一週,覺得裏面最有價值的可能就是關於左值,將亡值和右值的講解以及那兩個工具。看到那個將類分類,比如幾乎空類等等等等那一塊的時候,我真的感覺太教條化了,當場就想合上這本書。讀完沒搞懂作者寫這本書的閱讀對象是誰,應該不是給廣大工程師寫的!