深度探索 C++ 對像模型 (Inside the C++ Object Model) 深度探索C++对象模型

斯坦利•B.李普曼 (Stanley B. Lippman)

買這商品的人也買了...

商品描述

作者Lippman參與設計了全世界首套C++編譯程序cfront,這本《深度探索C++對象模型》就是一位偉大的C++編譯程序設計者向你闡述他如何處理各種explicit(明確出現於C++程序代碼中)和implicit(隱藏於程序代碼背後)的C++語意。
《深度探索C++對象模型》專註於C++面向對象程序設計的底層機制,包括結構式語意、臨時性對象的生成、封裝、繼承,以及虛擬——虛擬函數和虛擬繼承。這本《深度探索C++對象模型》讓你知道:一旦你能夠瞭解底層實現模型,你的程序代碼將獲得多麽大的效率。Lippman澄清了那些關於C++額外負荷與復雜度的各種錯誤信息和迷思,但也指出其中某些成本和利益交換確實存在。他闡述了各式各樣的實現模型,指出它們的進化之道及其本質因素。書中涵蓋了C++對象模型的語意暗示,並指出這個模型是如何影響你的程序的。

對於C++底層機制感興趣的讀者,這必然是一本讓你大呼過癮的絕妙好書。

作者簡介

作者:(美)Lippman

目錄大綱

本立道生(侯捷譯序)
目錄
前言
第0章導讀(譯者的話)

 

第1章關於對象
加上封裝後的佈局成本
1.1 C++對像模式
簡單對像模型
表格驅動對像模型
C++對像模型
對像模型如何影響程序
1.2關鍵詞所帶來的差異
關鍵詞的困擾
策略性正確的struct
1.3對象的差異
指針的類型
加上多態之後


第2章構造函數語意學
2.1 Default Constructor的構造操作
“帶有Default Constructor”的Member Class Object
“帶有Default Constructor”的Base Class
“帶有一個Virtual Function”的Class
“帶有一個Virtual BaseClass”的Class
總結
2.2Copy Constructor的構造操作
Default Memberwise Initialization
Bitwise Copy Semantics(位逐次拷貝)
不要Bitwise CopySemantics !
重新設定Virtual Table的指針
處理Virtual Base Class Subobject
2.3程序轉化語意學
顯式的初始化操作
參數的初始化
返回值的初始化
在使用者層面做優化
在編譯器層面做優化
Copy Constructor:要還是不要?
摘要
2.4成員們的初始化隊伍

第3章Data語意學
3.1Data Member的綁定
3.2Data Member的佈局
3.3Data Member的存取
Static Data Members
Nonstatic DataMembers97
3.4“繼承”與DataMember99
只要繼承不要多態
加上多態
多重繼承
虛擬繼承
3.5對象成員的效率
3.6指向DataMembers的指針
“指向Members的指針”的效率問題134

第4章Function語意學
4.1Member的各種調用方式140
Nonstatic Member Functions(非靜態成員函數)141
Virtual Member Functions(虛擬成員函數)147
Static Member Functions(靜態成員函數)148
4.2Virtual Member Functions(虛擬成員函數)152
多重繼承下的Virtual Functions159
虛擬繼承下的Virtual Functions168
4.3函數的效能170
4.4指向MemberFunction的指針
支持“指向VirtualMemberFunctions”的指針
在多重繼承之下,指向MemberFunctions的指針
“指向Member Functions之指針”的效率
4.5Inline Functions
形式參數
局部變量


第5章構造、析構、拷貝語意
純虛函數的存在
虛擬規格的存在
虛擬規格中const的存在195
重新考慮class的聲明195
5.1“無繼承”情況下的對象構造196
抽像數據類型
為繼承做準備
5.2繼承體系下的對象構造
虛擬繼承
vptr初始化語意學
5.3對象複製語意學
5.4對象的效能
5.5析構語意學


第6章執行期語意學
6.1對象的構造和析構
全局對象
局部靜態對象
對像數組
Default Constructors和數組
6.2new和delete運算符
針對數組的new語意
Placement Operatornew的語意
6.3臨時性對象
臨時性對象的迷思(神話、傳說)

第7章站在對像模型的尖端
7.1Template
Template的“實例化”行為
Template的錯誤報告
Template中的名稱決議法
Member Function的實例化行為
7.2異常處理
Exception Handling快速檢閱
對Exception Handling的支持
7.3執行期類型識別
Type—Safe Downcast(保證安全的向下轉換操作)
Type—Safe Dynamic Cast(保證安全的動態轉換)
References並不是Pointers
Typ eid運算符
7.4效率有了,彈性呢?
動態共享函數庫