C + +包含了比面向?qū)ο蟪绦蛟O(shè)計基本概念更多的內(nèi)容,讀者應當在學習設(shè)計和開發(fā)程序之前先理解該語言所包含的基本概念。
目 錄
譯者序
前言
第1章 對象的演化 1
1.1 基本概念 1
1.1.1 對象:特性+行為 1
1.1.2 繼承:類型關(guān)系 1
1.1.3 多態(tài)性 2
1.1.4 操作概念:OOP程序像什么 3
1.2 為什么C++會成功 3
1.2.1 較好的C 3
1.2.2 采用漸進的學習方式 4
1.2.3 運行效率 4
1.2.4 系統(tǒng)更容易表達和理解 4
1.2.5 “庫”使你事半功倍 4
1.2.6 錯誤處理 5
1.2.7 大程序設(shè)計 5
1.3 方法學介紹 5
1.3.1 復雜性 5
1.3.2 內(nèi)部原則 6
1.3.3 外部原則 7
1.3.4 對象設(shè)計的五個階段 9
1.3.5 方法承諾什么 10
1.3.6 方法應當提供什么 10
1.4 起草:最小的方法 12
1.4.1 前提 13
1.4.2 高概念 14
1.4.3 論述(treatment) 14
1.4.4 結(jié)構(gòu)化 14
1.4.5 開發(fā) 16
1.4.6 重寫 17
1.4.7 邏輯 17
1.5 其他方法 17
1.5.1 Booch 18
1.5.2 責任驅(qū)動的設(shè)計(RDD) 19
1.5.3 對象建模技術(shù)(OMT) 19
1.6 為向OOP轉(zhuǎn)變而采取的策略 19
1.6.1 逐步進入OOP 19
1.6.2 管理障礙 20
1.7 小結(jié) 21
第2章 數(shù)據(jù)抽象 22
2.1 聲明與定義 22
2.2 一個袖珍C庫 23
2.3 放在一起:項目創(chuàng)建工具 29
2.4 什么是非正常 29
2.5 基本對象 30
2.6 什么是對象 34
2.7 抽象數(shù)據(jù)類型 35
2.8 對象細節(jié) 35
2.9 頭文件形式 36
2.10 嵌套結(jié)構(gòu) 37
2.11 小結(jié) 41
2.12 練習 41
第3章 隱藏實現(xiàn) 42
3.1 設(shè)置限制 42
3.2 C++的存取控制 42
3.3 友元 44
3.3.1 嵌套友元 45
3.3.2 它是純的嗎 48
3.4 對象布局 48
3.5 類 48
3.5.1 用存取控制來修改stash 50
3.5.2 用存取控制來修改stack 51
3.6 句柄類(handle classes) 51
3.6.1 可見的實現(xiàn)部分 51
3.6.2 減少重復編譯 52
3.7 小結(jié) 54
3.8 練習 54
第4章 初始化與清除 55
4.1 用構(gòu)造函數(shù)確保初始化 55
4.2 用析構(gòu)函數(shù)確保清除 56
4.3 清除定義塊 58
4.3.1 for循環(huán) 59
4.3.2 空間分配 60
4.4 含有構(gòu)造函數(shù)和析構(gòu)函數(shù)的stash 61
4.5 含有構(gòu)造函數(shù)和析構(gòu)函數(shù)的stack 63
4.6 集合初始化 65
4.7 缺省構(gòu)造函數(shù) 67
4.8 小結(jié) 68
4.9 練習 68
第5章 函數(shù)重載與缺省參數(shù) 69
5.1 范圍分解 69
5.1.1 用返回值重載 70
5.1.2 安全類型連接 70
5.2 重載的例子 71
5.3 缺省參數(shù) 74
5.4 小結(jié) 81
5.5 練習 82
第6章 輸入輸出流介紹 83
6.1 為什么要用輸入輸出流 83
6.2 解決輸入輸出流問題 86
6.2.1 預先了解操作符重載 86
6.2.2 插入符與提取符 87
6.2.3 通常用法 88
6.2.4 面向行的輸入 90
6.3 文件輸入輸出流 91
6.4 輸入輸出流緩沖 93
6.5 在輸入輸出流中查找 94
6.6 strstreams 96
6.6.1 為用戶分配的存儲 96
6.6.2 自動存儲分配 98
6.7 輸出流格式化 100
6.7.1 內(nèi)部格式化數(shù)據(jù) 101
6.7.2 例子 102
6.8 格式化操縱算子 106
6.9 建立操縱算子 108
6.10 輸入輸出流實例 111
6.10.1 代碼生成 111
6.10.2 一個簡單的數(shù)據(jù)記錄 117
6.11 小結(jié) 123
6.12 練習 123
第7章 常量 124
7.1 值替代 124
7.1.1 頭文件里的const 124
7.1.2 const的安全性 125
7.1.3 集合 126
7.1.4 與C語言的區(qū)別 126
7.2 指針 127
7.2.1 指向const的指針 127
7.2.2 const指針 127
7.2.3 賦值和類型檢查 128
7.3 函數(shù)參數(shù)和返回值 128
7.3.1 傳遞const值 128
7.3.2 返回const值 129
7.3.3 傳遞和返回地址 131
7.4 類 133
7.4.1 類里的const和enum 133
7.4.2 編譯期間類里的常量 134
7.4.3 const對象和成員函數(shù) 136
7.4.4 只讀存儲能力 139
7.5 可變的(volatile) 140
7.6 小結(jié) 141
7.7 練習 141
第8章 內(nèi)聯(lián)函數(shù) 142
8.1 預處理器的缺陷 142
8.2 內(nèi)聯(lián)函數(shù) 144
8.2.1 類內(nèi)部的內(nèi)聯(lián)函數(shù) 145
8.2.2 存取函數(shù) 146
8.3 內(nèi)聯(lián)函數(shù)和編譯器 150
8.3.1 局限性 150
8.3.2 賦值順序 150
8.3.3 在構(gòu)造函數(shù)和析構(gòu)函數(shù)里隱藏行為 151
8.4 減少混亂 152
8.5 預處理器的特點 153
8.6 改進的錯誤檢查 154
8.7 小結(jié) 155
8.8 練習 155
第9章 命名控制 157
9.1 來自C語言中的靜態(tài)成員 157
9.1.1 函數(shù)內(nèi)部的靜態(tài)變量 157
9.1.2 控制連接 160
9.1.3 其他的存儲類型指定符 161
9.2 名字空間 161
9.2.1 產(chǎn)生一個名字空間 162
9.2.2 使用名字空間 163
9.3 C++中的靜態(tài)成員 166
9.3.1 定義靜態(tài)數(shù)據(jù)成員的存儲 166
9.3.2 嵌套類和局部類 168
9.3.3 靜態(tài)成員函數(shù) 169
9.4 靜態(tài)初始化的依賴因素 171
9.5 轉(zhuǎn)換連接指定 174
9.6 小結(jié) 174
9.7 練習 174
第10章 引用和拷貝構(gòu)造函數(shù) 176
10.1 C++中的指針 176
10.2 C++中的引用 176
10.2.1 函數(shù)中的引用 177
10.2.2 參數(shù)傳遞準則 178
10.3 拷貝構(gòu)造函數(shù) 179
10.3.1 傳值方式傳遞和返回 179
10.3.2 拷貝構(gòu)造函數(shù) 182
10.3.3 缺省拷貝構(gòu)造函數(shù) 187
10.3.4 拷貝構(gòu)造函數(shù)方法的選擇 188
10.4 指向成員的指針