內容簡介
《面向對象程式設計:C++語言描述(原書第2版)》內容豐富,結構合理,寫作風格嚴謹,深刻地論述了c++語言的面向對象編程的各種技術,主要內容包括:面向對象編程方法、c++語言的各種特性、stl、c++輸入/輸出流、mfc等。《面向對象程式設計:C++語言描述(原書第2版)》針對最新的c++規範作了全面的修訂,使讀者可以全面掌握c++的最新技術。為使讀者學習《面向對象程式設計:C++語言描述(原書第2版)》時掌握重點,各章節均配備了大量的練習和編程習題。《面向對象程式設計:C++語言描述(原書第2版)》在各章末列舉了大量易犯的編程錯誤及避免這些錯誤的方法,以幫助讀者編寫出更為可靠的代碼。
作者簡介
作者:(美國)詹森鮑爾(Richard Johnsonbaugh) (美國)Martin Kalin 譯者:蔡宇輝 李軍義 注釋 解說詞:楊貫中
圖書目錄
出版者的話
譯者序
前言
第1章 面向對象編程
1.1 面向過程的編程風格與面向對象的編程風格
1.1.1 面向過程的編程風格
1.1.2 面向對象的編程風格
1.1.3 關係
1.1.4 課後練習
1.2 類與抽象數據類型
1.2.1 信息隱藏
1.2.2 封裝
1.2.3 抽象數據類型
1.2.4 課後練習
1.3 客戶/伺服器模式與訊息傳遞
1.3.1 客戶/伺服器模式
1.3.2 訊息傳遞與方法調用
1.3.3 課後練習
1.4 繼承與多態
1.4.1 繼承
1.4.2 多態
1.4.3 多態與遞歸
1.4.4 課後練習
1.5 接口與組件
1.5.1 接口
1.5.2 組件
1.5.3 課後練習
第2章 從c到c++
2.1 名字空間
2.1.1 課後練習
2.2 c++輸入/輸出簡介
2.2.1 操縱符
2.2.2 混合使用c和c++的輸入/輸出
2.2.3 課後練習
2.3 檔案
2.3.1 測試檔案的打開狀態
2.3.2 課後練習
2.4 若干重要的c++特性
2.4.1 強制類型轉換
2.4.2 常數
2.4.3 數據類型bool
2.4.4 枚舉類型
2.4.5 定義變數
2.4.6 結構
2.4.7 課後練習
2.5 string類型
2.5.1 定義string類型的變數
2.5.2 轉換為c風格的字元串
2.5.3 字元串長度
2.5.4 讀寫string
2.5.5 賦值
2.5.6 字元串的連線
2.5.7 修改字元串
2.5.8 提取子串
2.5.9 查找
2.5.10 字元串比較
2.5.11 課後練習
2.6 函式
2.6.1 函式原型
2.6.2 main函式
2.6.3 引用
2.6.4 引用調用
2.6.5 引用返回
2.6.6 內聯函式
2.6.7 函式默認參數
2.6.8 函式重載
2.6.9 函式簽名
2.6.10 課後練習
2.7 new和delete操作符
2.7.1 課後練習
2.8 例外處理
2.8.1 課後練習
2.9 補充材料
2.9.1 c++關鍵字
2.9.2 無名名字空間
2.9.3 無名聯合
2.9.4 成員選擇符
2.10 常見編程錯誤
2.11 編程習題
第3章 類
3.1 類和對象
3.1.1 類聲明
3.1.2 c++的信息隱藏機制
3.1.3 成員選擇符
3.1.4 類範圍
3.1.5 關鍵字class和struct的區別
3.1.6 類成員函式的定義
3.1.7 在程式中使用類
3.1.8 課後練習
3.2 示例程式:堆疊類
3.2.1 問題
3.2.2 示例程式的輸出
3.2.3 解決方案
3.2.4 類的實現
3.2.5 代碼分析
3.2.6 程式設計建議
3.2.7 課後練習
3.3 效率和健壯性
3.3.1 通過引用來傳遞和返回對象
3.3.2 const類型參數的對象引用
3.3.3 const成員函式
3.3.4 對成員函式進行重載以便處理兩種類型的字元串
3.3.5 課後練習
3.4 示例程式:時間標記類
3.4.1 問題
3.4.2 示例程式的輸出
3.4.3 解決方案
3.4.4 類的實現
3.4.5 代碼分析
3.4.6 程式設計建議
3.4.7 課後練習
3.5 構造函式與析構函式
3.5.1 構造函式
3.5.2 對象數組與默認構造函式
3.5.3 通過構造函式約束對象的創建
3.5.4 拷貝構造函式
3.5.5 定義拷貝構造函式
3.5.6 禁止通過傳值方式傳遞和返回類對象
3.5.7 轉型構造函式
3.5.8 轉型構造函式與隱式類型轉換
3.5.9 構造函式初始化程式
3.5.10 構造函式與操作符new和new[]
3.5.11 析構函式
3.5.12 課後練習
3.6 示例程式:task類
3.6.1 問題
3.6.2 示例程式的輸出
3.6.3 解決方案
3.6.4 類的實現
3.6.5 代碼分析
3.6.6 課後練習
3.7 類數據成員和類成員函式
3.7.1 類數據成員
3.7.2 類成員函式
3.7.3 在成員函式內定義static變數
3.7.4 課後練習
3.8 指向對象的指針
3.8.1 常量指針this
3.8.2 課後練習
3.9 常見編程錯誤
3.10 編程習題
第4章 繼承
4.1 引言
4.1.1 課後練習
4.2 基本概念和語法
4.2.1 繼承機制下的私有成員
4.2.2 改變訪問限制
4.2.3 名字隱藏
4.2.4 間接繼承
4.2.5 課後練習
4.3 示例程式:影片跟蹤管理
4.3.1 問題
4.3.2 示例程式的輸出
4.3.3 解決方案
4.3.4 類的實現
4.3.5 代碼分析
4.3.6 程式設計建議
4.4 保護成員
4.4.1 課後練習
4.5 繼承機制下的構造函式與析構函式
4.5.1 繼承機制下的構造函式
4.5.2 派生類構造函式的規則
4.5.3 繼承機制下的析構函式
4.5.4 課後練習
4.6 示例程式:設計序列的類層次結構
4.6.1 問題
4.6.2 示例程式的輸入與輸出
4.6.3 解決方案
4.6.4 類的實現
4.6.5 代碼分析
4.7 多繼承
4.7.1 繼承和訪問規則
4.7.2 虛基類
4.7.3 課後練習
4.8 補充材料
4.8.1 保護繼承
4.8.2 私有繼承
4.9 常見編程錯誤
4.10 編程習題
第5章 多態
5.1 c++中的運行期綁定與編譯期綁定
5.1.1 c++多態的前提條件
5.1.2 虛成員函式繼承
5.1.3 運行期綁定和虛成員函式表
5.1.4 構造函式與析構函式
5.1.5 虛析構函式
5.1.6 對象成員函式和類成員函式
5.1.7 課後練習
5.2 示例程式:改進的影片跟蹤管理
5.2.1 問題
5.2.2 示例程式的輸入/輸出
5.2.3 解決方案
5.2.4 類的實現
5.2.5 代碼分析
5.2.6 程式設計建議
5.2.7 課後練習
5.3 重載、覆蓋和遮蔽
5.3.1 重載
5.3.2 覆蓋
5.3.3 遮蔽
5.3.4 名字共享
5.3.5 課後練習
5.4 抽象基類
5.4.1 抽象基類和純虛成員函式
5.4.2 定義純虛成員函式的限制
5.4.3 抽象基類的使用
5.4.4 微軟的iunknown接口
5.4.5 課後練習
5.5 運行期類型識別
5.5.1 dynamic_cast操作符
5.5.2 dynamic_cast的規則
5.5.3 dynamic_cast與static_cast小結
5.5.4 typeid操作符
5.5.5 擴展rtti
5.5.6 課後練習
5.6 補充材料
5.6.1 強多態和弱多態
5.7 常見編程錯誤
5.8 編程習題
第6章 操作符重載
6.1 基本操作符重載
6.1.1 操作符的優先權和語法
6.1.2 課後練習
6.2 示例程式:複數類
6.2.1 問題
6.2.2 示例程式的輸出
6.2.3 解決方案
6.2.4 類的實現
6.2.5 代碼分析
6.2.6 課後練習
6.3 用頂層函式進行操作符重載
6.3.1 課後練習
6.4 friend函式
6.4.1 課後練習
6.5 輸入與輸出操作符的重載
6.5.1 課後練習
6.6 賦值操作符的重載
6.6.1 課後練習
6.7 特殊操作符的重載
6.7.1 下標操作符的重載
6.7.2 函式調用操作符的重載
6.7.3 自增與自減操作符的重載
6.7.4 轉型操作符
6.7.5 課後練習
6.8 示例程式:關聯式數組
6.8.1 問題
6.8.2 示例程式的輸入與輸出
6.8.3 解決方案
6.8.4 類的實現
6.8.5 代碼分析
6.8.6 課後練習
6.9 記憶體管理操作符
6.9.1 課後練習
6.10 補充材料
6.10.1 friend類
6.11 常見編程錯誤
6.12 編程習題
第7章 模板與標準模板庫
7.1 模板的基本知識
7.1.1 模板實例
7.1.2 參數表中的模板類
7.1.3 模板的函式式參數
7.1.4 課後練習
7.2 示例程式:模板堆疊類
7.2.1 問題
7.2.2 示例程式的輸出
7.2.3 解決方案
7.2.4 類的實現
7.2.5 代碼分析
7.2.6 程式設計建議
7.2.7 斷言
7.2.8 課後練習
7.3 標準模板庫stl
7.3.1 容器、算法和疊代器
7.3.2 stl的優越性
7.3.3 容器基礎知識
7.3.4 基本序列式容器:vector、deque和list
7.3.5 vector、deque和list的效率比較
7.3.6 基本的關聯式容器:set、mult- iset、map和multimap
7.3.7 容器適配器
7.3.8 其他容器
7.3.9 stl算法
7.3.10 其他stl構件
7.3.11 課後練習
7.4 示例程式:證券業績報表
7.4.1 問題
7.4.2 示例程式的輸入與輸出
7.4.3 解決方案
7.4.4 類的實現
7.4.5 代碼分析
7.5 附加材料
7.5.1 模板類與繼承
7.6 常見編程錯誤
7.7 編程習題
第8章 c++輸入輸出類層次
8.1 概況
8.1.1 輸入輸出庫中的流類層次
8.1.2 輸入輸出庫中的緩衝類層次
8.1.3 緩衝類層次與流類層次的關係
8.1.4 模板的使用
8.1.5 課後練習
8.2 ios_base和basic_ios類
8.2.1 ios_base
8.2.2 basic_ios
8.2.3 例外處理
8.2.4 課後練習
8.3 高層輸入輸出類
8.3.1 basic_istream
8.3.2 basic_ostream
8.3.3 basic_iostream
8.3.4 課後練習
8.4 操縱器
8.4.1 設計不帶參數的操縱器
8.4.2 設計帶參數的操縱器
8.4.3 課後練習
8.5 檔案輸入輸出類
8.5.1 basic_ofstream
8.5.2 basic_ifstream
8.5.3 basic_fstream
8.5.4 課後練習
8.6 示例程式:隨機存取檔案類
8.6.1 問題
8.6.2 示例程式的輸入與輸出
8.6.3 解決方案
8.6.4 類的實現
8.6.5 代碼分析
8.7 字元流輸入/輸出類
8.7.1 basic_ostringstream
8.7.2 basic_istringstream
8.7.3 basic_stringstream
8.7.4 課後練習
8.8 示例程式:高層拷貝函式
8.8.1 問題
8.8.2 解決方案
8.8.3 類的實現
8.8.4 代碼分析
8.8.5 課後練習
8.9 緩衝區類
8.9.1 basic_streambuf
8.9.2 basic_filebuf
8.9.3 basic_stringbuf
8.9.4 課後練習
8.10 補充材料
8.11 常見編程錯誤
8.12 編程習題
第9章 mfc中的面向對象編程
9.1 用mfc進行windows程式設計
9.1.1 mfc編程的代碼生成器
9.1.2 課後練習
9.2 mfc中的文檔/視圖結構
9.2.1 文檔序列化
9.2.2 課後練習
9.3 示例程式:文檔序列化
9.3.1 問題
9.3.2 示例程式的輸出
9.3.3 解決方案
9.3.4 類的實現
9.3.5 代碼分析
9.3.6 課後練習
9.4 com
9.4.1 可更改的伺服器和不可變更的接口
9.4.2 com接口的層次
9.4.3 idispatch接口
9.4.4 com程式的類型
9.4.5 vc++對com的支持
9.4.6 com和ole
9.4.7 課後練習
9.5 示例程式:自動化伺服器與控制器
9.5.1 問題
9.5.2 示例程式的輸出
9.5.3 解決方案
9.5.4 類的實現
9.5.5 代碼分析
9.5.6 引用計數問題
9.5.7 課後練習
9.6 補充材料
9.7 編程習題
附錄a ascii表
附錄b 用到的c++函式和成員函式
附錄c 奇數編號練習的提示及答案