《C++面向對象高效編程》是2000年11月民郵電出版社出版的圖書,作者是Kayshav Dattatri。
基本介紹
- 書名:C++面向對象高效編程
- 作者: Kayshav Dattatri
- 原版名稱: C++ Effective Object-Oriented Software Construction
- 譯者:瀟湘工作室
中文名,內容簡介,推薦理由,內容截圖,
中文名
C++面向對象高效編程原名: C++ Effective Object-Oriented Software Construction作者: Kayshav Dattatri譯者: 瀟湘工作室圖書分類: 軟體資源格式: PDF版本: 掃描版出版社: 人民郵電出版社書號: 7115085927發行時間: 2000年11月
地區
內容簡介
本書以幫助讀者掌握C++面向對象高效編程方法為目的,詳細介紹了C++編程中的各種概念和套用技巧。全書共分為兩部分,第一部分介紹面向對象編程的基礎和套用,如數據抽象、繼承、異常處理等內容;第二部分說明了如何建立抽象的概念及其策略,並研究了C++對象模型。書中帶有大量的代碼實例,使讀者不僅能夠從理論上得以提高,而且還能夠輕鬆地在實踐中套用。
本書適用於C++程式設計師,也可供對面向對象程式設計感興趣的編程人員及大專院校計算機專業師生參考。
推薦理由
記得在一本講述程式設計師求職的書中談到,在美國,程式設計師的工資是一般美國人工資的兩倍,而 C++程式設計師比使用其他語言的程式設計師的工資更高。在中國不斷與國際接軌的今天,學習並熟悉C++語言,不僅能夠提高自己的工作技能,而且還是自己就業、求職以及獲得高薪和更多機會的一條很好的途徑。
本書的作者是經驗豐富的C++程式設計師,在本書中,他分兩部分介紹了在C++中高效編程的經驗:在第一部分中,介紹有關面向對象編程的基礎和套用,如數據抽象、繼承、異常處理等內容;在第二部分中;說明如何建立抽象的概念及其策略,並研究了C++對象模型。
內容截圖
第一部分 概念、實踐和套用
第1章 什麼是面向對象編程
1.1 背景
1.1.1 面向對象編程示例
1.1.2 銀行帳號的表示
1.1.3 銀行帳號的安全
1.1.4 用面向對象編程方法解決問題
1.2 理解對象模型
1.3 術語
1.4 理解訊息、方法和實例變數
1.4. 1 對象中包含的內容
1. 4. 2 實例化(或創建)對象
1.5 什麼可以作為類
1.6 什麼不是類
1.7 類的目的
1.8 深入了解對象
1.8.1 對象的狀態
1.8.2 對象狀態的重要性
1.8. 3 誰控制對象的狀態
1.8.4 對象的行為
. 1.9 面向對象軟體開發的階段
1.9.1 面向對象分析(00a)
1.9.2 面向對象設計(00d)
1.10 面向對象編程(oop)
1.11 對象模型的關鍵元素
1.12 oop範例和語言
1.13 面向對象程式語言的要求
1.14 對象模型的優點
1.15 小結
第2章 什麼是數據抽象
2.1 接口和實現的分離
2.1.1 接口的含義
2.2 對象接口的重要性
2.2. 1 什麼是充足的接口
2.3 實現的含義
2.4 保護實現
2.5 數據封裝的憂點
2.6 接口、實現和數據封裝之間的關係
2.7 數據封裝注意事項
2.8 確定封裝內容和時間
2.9 抽象數據類型
2. 10 抽象數據類型——堆疊的實現
2. 11 c++中的數據抽象
2.12 訪問類中的區域
2.13 和類一起使用的術語
2. 14 類的實現者
2. 15 實現成員函式
2. 16 確定成員函式的目標對象
2.17 程式示例
2. 18 對象是重點
2.19 對接口的再認識
2. 20 什麼是多執行緒安全類
2.21 確保抽象的可靠性——類常量和斷言
2. 21.1 類常量
2. 21.2 前提和後置條件
2. 21.3 使用斷言實現常量和條件
2. 21. 4 高效使用斷言
2.22 表示oo設計的符號
2. 23 booch符號
2.24 類關係
2. 24. 1 關聯
2.24. 2 聚合(有一個)
2. 24. 3 “使用”關係
2. 24.4 繼承性關係(是一個)
2. 24. 5 類的種類
2.25 統一建模語言(uml)
2.26 統一建模中的類關係
2.27 關聯
2.27.1 作為聚合的關聯
2.27.2 or關聯
2. 28 組合
2.29 生成關係(是一個)
2. 30 “有一個”關係的重要性
2.31 小結
第3章 c+十與數據抽象
3.1 類概念基礎
3.2 類元素細節
3.2.1 訪問區域
3.2.2 分析
3.3 複製構造函式
3.3.1 訪問對象的數據成員——c++模型
3. 4 賦值運算符
3.5 this指針和名稱修正的進一步說明
3. 6 const成員函式的概念
3.7 編譯器實現const成員函式的方式
3.8 c++中類和結構的區別
3.9 類可以包含什麼
3.10 設計期間的重點——類的接口
3.11 類名、成員函式名、參數類型和文檔
3.12 參數傳遞模式——客戶的視圖
3.13 採用語義
3.14 為參數選擇正確的模式
3.15 函式返回值
3.16 從函式中返回引用
3.17 編寫記憶體安全類
3.17.1 改善性能
3.18 客戶對類和函式的責任
3.19 小結
第4章 oop中的初始化和無用單元蒐集
4. 1 什麼是初始化
4. 1.1 使用構造函式初始化
4. 1.2 使用嵌入對象必須遵守的規則
4. 2 無用單元收集問題
4. 2.1 無用單元
4. 2.2 懸掛引用
4. 2.3 無用單元收集和懸掛引用的補救
4.2. 4 無用單元收集和語言設計
4. 2. 5 何時在c+十中產生無用單元
4. 2.6 對象什麼時候請求資源
4.3 c++中的無用單元收集
4.4 對象標識
4. 5 對象複製的語義
4. 5.1 簡單複製操作的語義
4. 6 對象賦值的語義
4.6.1 左值運算賦值
4. 7 對象相等的語義
4. 7.1 對象相等和對象等價
4. 8 為什麼需要副本控制
4. 8.1 信號量示例
4. 8.2 許可證伺服器例子
4.8.3 字元串類示例
4.9 分析
4. 10 “寫時複製”的概念
4. 10.l 何時使用引用計數
4.10.2 “寫時複製”小結
4.11 類和類型
4. 12 小結
第5章 繼承的概念
5.1 繼承的基本知識
5.2 “是一個”關係的含義
5. 3 繼承關係的效果
5.3.1 直接和間接基類
5.4 多態置換原則
5.4. 1 初始化基類對象
5.5 用繼承擴展類層次
5.6 繼承的一些基本優點
5.7 動態綁定、虛函式和多態性
5.7.1 動態綁定含義
5.7. 2 動態綁定的支持——虛函式
5.8 繼承對數據封裝的影響
5.9 多態的含義
5.10 高效使用虛函式(動態綁定)
5. 10.1 覆蓋的概念
5.11 虛析構函式的要求
5.12 構造函式和虛函式
5.13 一般一特殊概念
5.14 抽象(延期)類概念
5.15 抽象類的用途
5.16 繼承的威力
5.17 有效的代碼重用
5.18 抽象基類的客戶
5.19 繼承優點小結
5.20 繼承和動態綁定的危險
5.20.1 c++實現動態綁定(虛函式)
5.20.2 虛函式成本
5.20.3 動態綁定和類型檢查
5.21 不必要的繼承和動態綁定
5. 21. 1 圖書館出借系統
5. 22 使用虛函式的不同模式
5.23 小結
第6章 多重繼承概念
6.1 多重繼承的簡單定義
6.2 大學例子
6.2.1 改進後的代碼重用
6.3 多重繼承關係的含義
6.4 mi情況
6.4.1 c++中解決名稱衝突
6.4. 2 二義性基類問題
6.5 多重繼承的基本優點
6.6 多重繼承的替換方法
6.6. 1 第一種替換方法
6.6.2 第二種情況
6.7 重複繼承
6.8 重複繼承的解決方案
6.8.1 在c+十中利用虛基類共享對象
6.8.2 虛基類的優點
6.8.3 虛基類產生的新問題
6.8.4 比較eiffel和 c++中的mi
6.9 繼承的一般問題
6.10 使用mixin類加入靜態功能
6. 10.1 mixin類的定義
6.10.2 何時使用mixin類
6.11 動態變化情況的設計
6.11.1 角色扮演類的設計靈活性
6.11.2 使用角色扮演類
6.11.3 管理角色的另一種方法
6.11.4 tuniversitymember對象的多態用法
6. 11.5 對現存類的必須改動
6.11.6 mixin類和角色對象的比較——適用性
6.12 c++的私有派生
6.12.1 何時使用私有派生
6.12.2 重新導出私有基類的成員
6.12. 3 私有派生的替換方法——包含
6.12.4 私有派生的需求
6.13 mixin類和私有派生的實用示例
6.14 繼承和包含
6. 15 小結
第7章 從類中選擇性導出(友元函式)
7.1 需要什麼
7.2 c++的情況
7.3 友元關係的含義
7.4 非成員函式和友元函式的套用
7.4. 1 實例1:儘量減少類之間過多的相互影響
7.4.2 實例2:克服語法問題
7.4. 3 實例3:需要和多個類進行通信的函式
7.5 非成員函式的優點
7.6 選擇友元函式還是成員函式
7.7 小結
第8章 運算符重載的概念
8.1 語言類型和程式設計師定義類型的差別
8.2 什麼是重載運算符
8.3 為什麼需要運算符重載——優缺點
8.3.1 更加優秀的抽象數據類型
8.3.2 令人費解的運算符重載
8.3.3 無法理解優先權和結合規則
8.4 c++中的重載運算符
8.5 ++和——運算符的另一個套用
8.5.1 下標運算符: operator[]
8.6 更複雜的運算符——成員訪問運算符:→
8.7 非成員函式的運算符
8.7.1 作為成員函式的運算符
8.7.2 作為非成員函式實現的運算符
8.7.3 為什麼需要轉換
8.8 轉換函式
8.8.1 轉換構造函式和轉換函式之間的相互影響
8.8.2 減少對臨時對象的需求
8.9 從運算符函式返回結果
8.10 賦值運算符
8.11 小結
第9章 通用類型
9.1 重複性編碼問題
9.2 聰明的解決方案——通用編程
9.3 通用類型(類)基礎
9.3.1 在c++中實例化新模板類時發生的事情
9.4 通用類型和代碼複製
9.5 通用類實現者和客戶之間的協定
9.5. 1 這是否是良好的設計
9.5.2 通用類實現中的運算符和成員函式
9.5.3 替換解決方案——通用類的特殊化
9.6 模板特殊化
9.6.1 特殊化模板成員函式
9.6.2 另一種方法:從對象中分離比較
9.6.3 不能特殊化某個模板成員函式的情況
9.7 模板類特殊化
9.8 通用函式的概念
9.9 c++中模板類和成員函式的實例化
9.10 通用類型和類型檢查
9.11 限制和無限制通用性
9.11.1 c++中對模板參數的限制
9.11.2 c++中模板參數的特定類型
9.11.3 模板參數的默認值
9.12 c++模板參數的限制
9.13 通用類和選擇性導出
9.14 繼承和通用類
9.14.1 多態性和通用類
9.15 通用類繼承的用途
9.15.1 單獨方法
9.16 控制對象創建的通用技術
9.17 實現計數指針
9.18 用模板對象儘量減少代碼複製
9.18.1 程式的記憶體覆蓋區
9.18.2 減少模板代碼的方法
9.19 模板類和原始碼保護
9.20 共享(動態)庫中的模板類
9.20.1 共享庫中的模板類——多實例問題
9.20.2 消除共享庫中的多個實例
9.20.3 和現存共享庫連結
9.20.4 容器類
9.21 通用類和繼承的比較
9.22 小結
第10章 處理異常情況
10.1 處理錯誤情況的原因
10.1.1 錯誤碼有什麼錯誤
10.2 什麼是替換方法
10.3 c++異常處理模型
10.3.1 c++異常機制的工作方式
10. 3.2 try塊的重要性
10.3.3 throw表達式的重要性
10.3.4 理解動態調用鏈
10.3.5 處理多個異常
10.3.6 捕獲塊的責任
10.4 eiffel中的異常模型
10.5 eiffel和c++異常模型的優缺點
10.6 高效使用c++異常
10.7 創建異常層次結構
10.7.1 捕獲處理程式的順序
10.7.2 編寫異常安全函式
10.8 在工程中設計異常處理
10.8.1 何時引發異常
10.9 工程中成功的錯誤管理策略
10.9.1 函式並不是防火牆
10.9.2 設計異常層次結構
10.10 異常環境中的資源管理
10.10.1 自動資源管理
10.10.2 推廣資源管理解決方案
10.11 異常和構造函式
10.11.1 從函式中返回安全資源
10.11.2 管理對象數組的輔助類
10.11.3 自動無用單元蒐集的代價
10.12 構造函式的部分完成
10.13 用異常創建安全的數組
10.14 小結
第二部分 建立強大的面向對象軟體
第11章 掌握數據抽象
11.1 隱藏抽象的實現細節
11.1.1 使用句柄的優點
11.1.2 使用句柄的缺點
11.2 作為數據成員使用指針(惰性計算)
11.3 控制對象的創建
11.3.1 只允許使用 new()運算符創建對象
11.3.2 防止用 new()運算符創建對象
11.4 使用指針和引用代替嵌入對象
11.5 避免用大型數組作為自動變數(或者數據成員)
11.6 使用對象數組和對象指針數組
11.7 對於數據成員和成員函式的返回值,首選對象,而不是簡單類型的指針
11.8 與c的兼容性
11.9 注意實現的選擇:對象大小和代碼效率
11.10 避免臨時對象
11.11 使用複製構造函式初始化對象
11.12 有效使用代理對象
11.12.1 有助於對象的安全共享的代理對象
11.12.2 為方便使用的代理對象
11.12. 3 作為遠程對象替身的代理對象
11.12.4 提供其他功能的智慧型代理對象
11.12.5 解決語法/語義問題的代理
11.12.6 通用下標代理技術
11.13 使用簡單的抽象建立更複雜的抽象
11.14 抽象必須允許客戶用各種不同的方式使用類
11.15 小結
第12章 高效使用繼承
12.1 用繼承實現優秀的選單和命令
12.1.1 支持不同的選單類型
12.2 封裝對象創建細節
12.3 虛擬構造函式的概念
12.4 為協定控制而組合使用虛函式和非虛函式
12.5 雙重調度概念
12.6 設計和實現容器類
12.7 設計處理不同的容器
12.8 用通用性編程實現同類容器類
12.8.1 設計目的
12.8.2 基於模板的同類容器的優點
12.9 基於模板的容器的缺點
12.9.1 用基於指針的同類容器實現異類容器
12.10 導航容器
12. 10.1 被動疊代器
12.11 主動疊代器
12.11.1 疊代器對象
12.12 管理集合和疊代器——客戶的角度
12.12.1 樣式1:創建並從容器返回疊代器以便於用戶使用
12.12.2 樣式2:按值返回一個用戶可以使用疊代器控制的容器
12.13 c++標準模板庫(stl)
12.13.1 stl容器
12.13.2 疊代器
12.13.3 stl中的算法
12.14 小結
12.15 tarray容器的實現代碼
第13章 理解c+十對象模型
13.1 高效實現
13.2 c++表示對象的方式
13.2.1 沒有任何虛函式的類
13.2.2 成員函式
13.2.3 靜態數據成員
13. 2.4 構造函式
13.3 包含虛函式的類
13.3.1 vtbl指針的布局
13.4 在共享庫之間共享虛函式表
13.5 虛函式和多重繼承(非虛基類)
13.6 虛擬基類
13.6.1 虛基類的成員訪問
13.6.2 帶有虛函式的虛基類
13.7 rtti的實現支持(運行時類型確認)
13.8 基於對象和面向對象編程
13. 9 引用、指針和值
13.9.1 引用和指針的賦值
13.9.2 複製構造函式
13.9.3 構造函式的責任
13.10 複製構造函式的責任
13.11 對象的按值傳遞和按值返回的最佳化
13. 11.1 按值傳遞
13.11.2 按值返回
13.12 運行時初始化
13.13 小結
附錄a
a.1 名稱空間特性
a.1.1 using聲明
a.1.2 using指令
a. 1.3 std名稱空間
參考書目和推薦讀物
第1章 什麼是面向對象編程
1.1 背景
1.1.1 面向對象編程示例
1.1.2 銀行帳號的表示
1.1.3 銀行帳號的安全
1.1.4 用面向對象編程方法解決問題
1.2 理解對象模型
1.3 術語
1.4 理解訊息、方法和實例變數
1.4. 1 對象中包含的內容
1. 4. 2 實例化(或創建)對象
1.5 什麼可以作為類
1.6 什麼不是類
1.7 類的目的
1.8 深入了解對象
1.8.1 對象的狀態
1.8.2 對象狀態的重要性
1.8. 3 誰控制對象的狀態
1.8.4 對象的行為
. 1.9 面向對象軟體開發的階段
1.9.1 面向對象分析(00a)
1.9.2 面向對象設計(00d)
1.10 面向對象編程(oop)
1.11 對象模型的關鍵元素
1.12 oop範例和語言
1.13 面向對象程式語言的要求
1.14 對象模型的優點
1.15 小結
第2章 什麼是數據抽象
2.1 接口和實現的分離
2.1.1 接口的含義
2.2 對象接口的重要性
2.2. 1 什麼是充足的接口
2.3 實現的含義
2.4 保護實現
2.5 數據封裝的憂點
2.6 接口、實現和數據封裝之間的關係
2.7 數據封裝注意事項
2.8 確定封裝內容和時間
2.9 抽象數據類型
2. 10 抽象數據類型——堆疊的實現
2. 11 c++中的數據抽象
2.12 訪問類中的區域
2.13 和類一起使用的術語
2. 14 類的實現者
2. 15 實現成員函式
2. 16 確定成員函式的目標對象
2.17 程式示例
2. 18 對象是重點
2.19 對接口的再認識
2. 20 什麼是多執行緒安全類
2.21 確保抽象的可靠性——類常量和斷言
2. 21.1 類常量
2. 21.2 前提和後置條件
2. 21.3 使用斷言實現常量和條件
2. 21. 4 高效使用斷言
2.22 表示oo設計的符號
2. 23 booch符號
2.24 類關係
2. 24. 1 關聯
2.24. 2 聚合(有一個)
2. 24. 3 “使用”關係
2. 24.4 繼承性關係(是一個)
2. 24. 5 類的種類
2.25 統一建模語言(uml)
2.26 統一建模中的類關係
2.27 關聯
2.27.1 作為聚合的關聯
2.27.2 or關聯
2. 28 組合
2.29 生成關係(是一個)
2. 30 “有一個”關係的重要性
2.31 小結
第3章 c+十與數據抽象
3.1 類概念基礎
3.2 類元素細節
3.2.1 訪問區域
3.2.2 分析
3.3 複製構造函式
3.3.1 訪問對象的數據成員——c++模型
3. 4 賦值運算符
3.5 this指針和名稱修正的進一步說明
3. 6 const成員函式的概念
3.7 編譯器實現const成員函式的方式
3.8 c++中類和結構的區別
3.9 類可以包含什麼
3.10 設計期間的重點——類的接口
3.11 類名、成員函式名、參數類型和文檔
3.12 參數傳遞模式——客戶的視圖
3.13 採用語義
3.14 為參數選擇正確的模式
3.15 函式返回值
3.16 從函式中返回引用
3.17 編寫記憶體安全類
3.17.1 改善性能
3.18 客戶對類和函式的責任
3.19 小結
第4章 oop中的初始化和無用單元蒐集
4. 1 什麼是初始化
4. 1.1 使用構造函式初始化
4. 1.2 使用嵌入對象必須遵守的規則
4. 2 無用單元收集問題
4. 2.1 無用單元
4. 2.2 懸掛引用
4. 2.3 無用單元收集和懸掛引用的補救
4.2. 4 無用單元收集和語言設計
4. 2. 5 何時在c+十中產生無用單元
4. 2.6 對象什麼時候請求資源
4.3 c++中的無用單元收集
4.4 對象標識
4. 5 對象複製的語義
4. 5.1 簡單複製操作的語義
4. 6 對象賦值的語義
4.6.1 左值運算賦值
4. 7 對象相等的語義
4. 7.1 對象相等和對象等價
4. 8 為什麼需要副本控制
4. 8.1 信號量示例
4. 8.2 許可證伺服器例子
4.8.3 字元串類示例
4.9 分析
4. 10 “寫時複製”的概念
4. 10.l 何時使用引用計數
4.10.2 “寫時複製”小結
4.11 類和類型
4. 12 小結
第5章 繼承的概念
5.1 繼承的基本知識
5.2 “是一個”關係的含義
5. 3 繼承關係的效果
5.3.1 直接和間接基類
5.4 多態置換原則
5.4. 1 初始化基類對象
5.5 用繼承擴展類層次
5.6 繼承的一些基本優點
5.7 動態綁定、虛函式和多態性
5.7.1 動態綁定含義
5.7. 2 動態綁定的支持——虛函式
5.8 繼承對數據封裝的影響
5.9 多態的含義
5.10 高效使用虛函式(動態綁定)
5. 10.1 覆蓋的概念
5.11 虛析構函式的要求
5.12 構造函式和虛函式
5.13 一般一特殊概念
5.14 抽象(延期)類概念
5.15 抽象類的用途
5.16 繼承的威力
5.17 有效的代碼重用
5.18 抽象基類的客戶
5.19 繼承優點小結
5.20 繼承和動態綁定的危險
5.20.1 c++實現動態綁定(虛函式)
5.20.2 虛函式成本
5.20.3 動態綁定和類型檢查
5.21 不必要的繼承和動態綁定
5. 21. 1 圖書館出借系統
5. 22 使用虛函式的不同模式
5.23 小結
第6章 多重繼承概念
6.1 多重繼承的簡單定義
6.2 大學例子
6.2.1 改進後的代碼重用
6.3 多重繼承關係的含義
6.4 mi情況
6.4.1 c++中解決名稱衝突
6.4. 2 二義性基類問題
6.5 多重繼承的基本優點
6.6 多重繼承的替換方法
6.6. 1 第一種替換方法
6.6.2 第二種情況
6.7 重複繼承
6.8 重複繼承的解決方案
6.8.1 在c+十中利用虛基類共享對象
6.8.2 虛基類的優點
6.8.3 虛基類產生的新問題
6.8.4 比較eiffel和 c++中的mi
6.9 繼承的一般問題
6.10 使用mixin類加入靜態功能
6. 10.1 mixin類的定義
6.10.2 何時使用mixin類
6.11 動態變化情況的設計
6.11.1 角色扮演類的設計靈活性
6.11.2 使用角色扮演類
6.11.3 管理角色的另一種方法
6.11.4 tuniversitymember對象的多態用法
6. 11.5 對現存類的必須改動
6.11.6 mixin類和角色對象的比較——適用性
6.12 c++的私有派生
6.12.1 何時使用私有派生
6.12.2 重新導出私有基類的成員
6.12. 3 私有派生的替換方法——包含
6.12.4 私有派生的需求
6.13 mixin類和私有派生的實用示例
6.14 繼承和包含
6. 15 小結
第7章 從類中選擇性導出(友元函式)
7.1 需要什麼
7.2 c++的情況
7.3 友元關係的含義
7.4 非成員函式和友元函式的套用
7.4. 1 實例1:儘量減少類之間過多的相互影響
7.4.2 實例2:克服語法問題
7.4. 3 實例3:需要和多個類進行通信的函式
7.5 非成員函式的優點
7.6 選擇友元函式還是成員函式
7.7 小結
第8章 運算符重載的概念
8.1 語言類型和程式設計師定義類型的差別
8.2 什麼是重載運算符
8.3 為什麼需要運算符重載——優缺點
8.3.1 更加優秀的抽象數據類型
8.3.2 令人費解的運算符重載
8.3.3 無法理解優先權和結合規則
8.4 c++中的重載運算符
8.5 ++和——運算符的另一個套用
8.5.1 下標運算符: operator[]
8.6 更複雜的運算符——成員訪問運算符:→
8.7 非成員函式的運算符
8.7.1 作為成員函式的運算符
8.7.2 作為非成員函式實現的運算符
8.7.3 為什麼需要轉換
8.8 轉換函式
8.8.1 轉換構造函式和轉換函式之間的相互影響
8.8.2 減少對臨時對象的需求
8.9 從運算符函式返回結果
8.10 賦值運算符
8.11 小結
第9章 通用類型
9.1 重複性編碼問題
9.2 聰明的解決方案——通用編程
9.3 通用類型(類)基礎
9.3.1 在c++中實例化新模板類時發生的事情
9.4 通用類型和代碼複製
9.5 通用類實現者和客戶之間的協定
9.5. 1 這是否是良好的設計
9.5.2 通用類實現中的運算符和成員函式
9.5.3 替換解決方案——通用類的特殊化
9.6 模板特殊化
9.6.1 特殊化模板成員函式
9.6.2 另一種方法:從對象中分離比較
9.6.3 不能特殊化某個模板成員函式的情況
9.7 模板類特殊化
9.8 通用函式的概念
9.9 c++中模板類和成員函式的實例化
9.10 通用類型和類型檢查
9.11 限制和無限制通用性
9.11.1 c++中對模板參數的限制
9.11.2 c++中模板參數的特定類型
9.11.3 模板參數的默認值
9.12 c++模板參數的限制
9.13 通用類和選擇性導出
9.14 繼承和通用類
9.14.1 多態性和通用類
9.15 通用類繼承的用途
9.15.1 單獨方法
9.16 控制對象創建的通用技術
9.17 實現計數指針
9.18 用模板對象儘量減少代碼複製
9.18.1 程式的記憶體覆蓋區
9.18.2 減少模板代碼的方法
9.19 模板類和原始碼保護
9.20 共享(動態)庫中的模板類
9.20.1 共享庫中的模板類——多實例問題
9.20.2 消除共享庫中的多個實例
9.20.3 和現存共享庫連結
9.20.4 容器類
9.21 通用類和繼承的比較
9.22 小結
第10章 處理異常情況
10.1 處理錯誤情況的原因
10.1.1 錯誤碼有什麼錯誤
10.2 什麼是替換方法
10.3 c++異常處理模型
10.3.1 c++異常機制的工作方式
10. 3.2 try塊的重要性
10.3.3 throw表達式的重要性
10.3.4 理解動態調用鏈
10.3.5 處理多個異常
10.3.6 捕獲塊的責任
10.4 eiffel中的異常模型
10.5 eiffel和c++異常模型的優缺點
10.6 高效使用c++異常
10.7 創建異常層次結構
10.7.1 捕獲處理程式的順序
10.7.2 編寫異常安全函式
10.8 在工程中設計異常處理
10.8.1 何時引發異常
10.9 工程中成功的錯誤管理策略
10.9.1 函式並不是防火牆
10.9.2 設計異常層次結構
10.10 異常環境中的資源管理
10.10.1 自動資源管理
10.10.2 推廣資源管理解決方案
10.11 異常和構造函式
10.11.1 從函式中返回安全資源
10.11.2 管理對象數組的輔助類
10.11.3 自動無用單元蒐集的代價
10.12 構造函式的部分完成
10.13 用異常創建安全的數組
10.14 小結
第二部分 建立強大的面向對象軟體
第11章 掌握數據抽象
11.1 隱藏抽象的實現細節
11.1.1 使用句柄的優點
11.1.2 使用句柄的缺點
11.2 作為數據成員使用指針(惰性計算)
11.3 控制對象的創建
11.3.1 只允許使用 new()運算符創建對象
11.3.2 防止用 new()運算符創建對象
11.4 使用指針和引用代替嵌入對象
11.5 避免用大型數組作為自動變數(或者數據成員)
11.6 使用對象數組和對象指針數組
11.7 對於數據成員和成員函式的返回值,首選對象,而不是簡單類型的指針
11.8 與c的兼容性
11.9 注意實現的選擇:對象大小和代碼效率
11.10 避免臨時對象
11.11 使用複製構造函式初始化對象
11.12 有效使用代理對象
11.12.1 有助於對象的安全共享的代理對象
11.12.2 為方便使用的代理對象
11.12. 3 作為遠程對象替身的代理對象
11.12.4 提供其他功能的智慧型代理對象
11.12.5 解決語法/語義問題的代理
11.12.6 通用下標代理技術
11.13 使用簡單的抽象建立更複雜的抽象
11.14 抽象必須允許客戶用各種不同的方式使用類
11.15 小結
第12章 高效使用繼承
12.1 用繼承實現優秀的選單和命令
12.1.1 支持不同的選單類型
12.2 封裝對象創建細節
12.3 虛擬構造函式的概念
12.4 為協定控制而組合使用虛函式和非虛函式
12.5 雙重調度概念
12.6 設計和實現容器類
12.7 設計處理不同的容器
12.8 用通用性編程實現同類容器類
12.8.1 設計目的
12.8.2 基於模板的同類容器的優點
12.9 基於模板的容器的缺點
12.9.1 用基於指針的同類容器實現異類容器
12.10 導航容器
12. 10.1 被動疊代器
12.11 主動疊代器
12.11.1 疊代器對象
12.12 管理集合和疊代器——客戶的角度
12.12.1 樣式1:創建並從容器返回疊代器以便於用戶使用
12.12.2 樣式2:按值返回一個用戶可以使用疊代器控制的容器
12.13 c++標準模板庫(stl)
12.13.1 stl容器
12.13.2 疊代器
12.13.3 stl中的算法
12.14 小結
12.15 tarray容器的實現代碼
第13章 理解c+十對象模型
13.1 高效實現
13.2 c++表示對象的方式
13.2.1 沒有任何虛函式的類
13.2.2 成員函式
13.2.3 靜態數據成員
13. 2.4 構造函式
13.3 包含虛函式的類
13.3.1 vtbl指針的布局
13.4 在共享庫之間共享虛函式表
13.5 虛函式和多重繼承(非虛基類)
13.6 虛擬基類
13.6.1 虛基類的成員訪問
13.6.2 帶有虛函式的虛基類
13.7 rtti的實現支持(運行時類型確認)
13.8 基於對象和面向對象編程
13. 9 引用、指針和值
13.9.1 引用和指針的賦值
13.9.2 複製構造函式
13.9.3 構造函式的責任
13.10 複製構造函式的責任
13.11 對象的按值傳遞和按值返回的最佳化
13. 11.1 按值傳遞
13.11.2 按值返回
13.12 運行時初始化
13.13 小結
附錄a
a.1 名稱空間特性
a.1.1 using聲明
a.1.2 using指令
a. 1.3 std名稱空間
參考書目和推薦讀物