本立道生(侯捷 譯序) 目錄 前言(Stanley B. Lippman) 第0章 導讀(譯者的話) 第1章 關於對象(Object Lessons) 加上封裝后的布局成本(Layout Costs for Adding Encapsulation) 1.1 C++對象模式(The C++ Object Model) 簡單對象模型(A Simple Object Model) 表格驅動對象模型(A Table-driven Object Model) C++對象模型(The C++ Object Model) 對象模型如何影響程序(How the Object Model Effects Programs) 1.2 關鍵詞所帶來的差異(A Keyword Distinction) 關鍵詞的困擾 策略性正確的struct(The Politically Correct Struct) 1.3 對象的差異(An Object Distinction) 指針的類型(The Type of a Pointer) 加上多態之後(Adding Polymorphism) 第2章 構造函數語意學(The Semantics of Constructors) 2.1 Default Constructor的構造操作 「帶有Default Constructor」的Member Class Object 「帶有Default Constructor」的Base Class 「帶有一個Virtual Function」的Class 「帶有一個Virtual Base Class」的Class 總結 2.2 Copy Constructor的構造操作 Default Memberwise Initialization Bitwise Copy Semantics(位逐次拷貝) 不要Bitwise Copy Semantics! 重新設定Virtual Table的指針 處理Virtual Base Class Subobject 2.3 程序轉化語意學(Program Transformation Semantics) 顯式的初始化操作(Explicit Initialization) 參數的初始化(Argument Initialization) 返回值的初始化(Return Value Initialization) 在使用者層面做優化(Optimization at the User Level) 在編譯器層面做優化(Optimization at the Compiler Level) Copy Constructor:要還是不要? 摘要 2.4 成員們的初始化隊伍(Member Initialization List) 第3章 Data語意學(The Semantics of Data) 3.1 Data Member的綁定(The Binding of a Data Member) 3.2 Data Member的布局(Data Member Layout) 3.3 Data Member的存取 Static Data Members Nonstatic Data Members 3.4 「繼承」與Data Member 只要繼承不要多態(Inheritance without Polymorphism) 加上多態(Adding Polymorphism) 多重繼承(Multiple Inheritance) 虛擬繼承(Virtual Inheritance)
3.5 對象成員的效率(Object Member Efficiency) 3.6 指向Data Members的指針(Pointer to Data Members) 「指向Members的指針」的效率問題 第4章 Function語意學(The Semantics of Function) 4.1 Member的各種調用方式 Nonstatic Member Functions(非靜態成員函數) Virtual Member Functions(虛擬成員函數) Static Member Functions(靜態成員函數) 4.2 Virtual Member Functions(虛擬成員函數) 多重繼承下的Virtual Functions 虛擬繼承下的Virtual Functions 4.3 函數的效能 4.4 指向Member Function的指針(Pointer-to-Member Functions) 支持「指向Virtual Member Functions」的指針 在多重繼承之下,指向Member Functions的指針 「指向Member Functions之指針」的效率 4.5 Inline Functions 形式參數(Formal Arguments) 局部變數(Local Variables) 第5章 構造、析構、拷貝語意學(Semantics of Construction, Destruction, and Copy) 純虛函數的存在(Presence of a Pure Virtual Function) 虛擬規格的存在(Presence of a Virtual Specification) 虛擬規格中const的存在 重新考慮class的聲明 5.1 「無繼承」情況下的對象構造 抽象數據類型(Abstract Data Type) 為繼承做準備 5.2 繼承體系下的對象構造 虛擬繼承(Virtual Inheritance) vptr初始化語意學(The Semantics of the vptr Initialization) 5.3 對象複製語意學(Object Copy Semantics) 5.4 對象的效能(Object Efficiency) 5.5 析構語意學(Semantics of Destruction) 第6章 執行期語意學(Runtime Semantics) 6.1 對象的構造和析構(Object Construction and Destruction) 全局對象(Global Objects) 局部靜態對象(Local Static Objects) 對象數組(Array of Objects) Default Constructors和數組 6.2 new和delete運算符 針對數組的new語意 Placement Operator new的語意 6.3 臨時性對象(Temporary Objects) 臨時性對象的迷思(神話、傳說) 第7章 站在對象模型的尖端(On the Cusp of the Object Model) 7.1 Template Template的「實例化」行為(Template Instantiation) Template的錯誤報告(Error Reporting within a Template) Template中的名稱決議法(Name Resolution within a Template) Member Function的實例化行為(Member Function Instantiation)