第0章 緻讀者1
第1部分
第1章 C++的史前時代17
1.1 Simula和分布式係統17
1.2 C與係統程序設計19
1.3 一般性的背景20
第2章 C with Classes23
2.1 C with Classes的誕生23
2.2 特徵概覽25
2.3 類26
2.4 運行時的效率28
2.5 連接模型30
2.5.1 純樸的實現32
2.5.2 對象連接模型33
2.6 靜態類型檢查35
2.6.1 窄轉換36
2.6.2 警告的使用36
2.7 為什麼是C37
2.8 語法問題39
2.8.1 C聲明的語法39
2.8.2 結構標誌與類型名41
2.8.3 語法的重要性42
2.9 派生類42
2.9.1 沒有虛函數時的多態性43
2.9.2 沒有模闆時的容器類44
2.9.3 對象的布局模型45
2.9.4 迴顧46
2.10 保護模型46
2.11 運行時的保證48
2.11.1 構造函數與析構函數49
2.11.2 存儲分配和構造函數49
2.11.3 調用函數和返迴函數50
2.12 次要特徵50
2.12.1 賦值的重載50
2.12.2 默認實參51
2.13 考慮過,但是沒有提供的特徵52
2.14 工作環境52
第3章 C++的誕生55
3.1 從C with Classes到C++55
3.2 目標57
3.3 Cfront58
3.3.1 生成C59
3.3.2 分析C++60
3.3.3 連接問題61
3.3.4 Cfront發布61
3.4 語言特徵63
3.5 虛函數63
3.5.1 對象布局模型66
3.5.2 覆蓋和虛函數匹配67
3.5.3 基成員的遮蔽68
3.6 重載68
3.6.1 基本重載70
3.6.2 成員和友元71
3.6.3 運算符函數73
3.6.4 效率和重載73
3.6.5 變化和新運算符75
3.7 引用75
3.8 常量78
3.9 存儲管理80
3.10 類型檢查81
3.11 次要特徵82
3.11.1 注釋82
3.11.2 構造函數的記法82
3.11.3 限定83
3.11.4 全局變量的初始化84
3.11.5 聲明語句87
3.12 與經典C的關係88
3.13 語言設計工具91
3.14 《C++程序設計語言》(第一版)92
3.15 有關“什麼是”的論文93
第4章 C++語言設計規則96
4.1 規則和原理96
4.2 一般性規則97
4.3 設計支持規則100
4.4 語言的技術性規則103
4.5 低級程序設計支持規則106
4.6 最後的話108
第5章 1985—1993年錶109
5.1 引言109
5.2 Release 2.0110
5.3 帶標注的參考手冊(ARM)112
5.4 ANSI和ISO標準化114
第6章 標準化118
6.1 什麼是標準118
6.1.1 實現細節119
6.1.2 現實的檢查120
6.2 委員會如何運作121
6.3 淨化123
6.3.1 查找問題123
6.3.2 臨時量的生存期127
6.4 擴充130
6.4.1 評價準則133
6.4.2 狀況134
6.4.3 好擴充的問題136
6.4.4 一緻性137
6.5 擴充建議實例137
6.5.1 關鍵詞實參137
6.5.2 受限指針141
6.5.3 字符集142
第7章 關注和使用146
7.1 關注和使用的爆炸性增長146
7.1.1 C++市場的缺位147
7.1.2 會議148
7.1.3 雜誌和書籍148
7.1.4 編譯器149
7.1.5 工具和環境149
7.2 C++的教與學150
7.3 用戶和應用156
7.3.1 早期用戶156
7.3.2 後來的用戶156
7.4 商業競爭157
7.4.1 傳統語言158
7.4.2 更新一些的語言158
7.4.3 期望和看法159
第8章 庫162
8.1 引言162
8.2 C++庫設計162
8.2.1 庫設計的摺中163
8.2.2 語言特徵和庫的構造164
8.2.3 處理庫的多樣性164
8.3 早期的庫165
8.3.1 I/O流庫166
8.3.2 並行支持168
8.4 其他庫171
8.4.1 基礎庫171
8.4.2 持續性和數據庫172
8.4.3 數值庫172
8.4.4 專用庫172
8.5 一個標準庫173
第9章 展望175
9.1 引言175
9.2 迴顧176
9.2.1 C++在其預期領域取得瞭成功嗎?176
9.2.2 C++是不是一種統一的語言?177
9.2.3 什麼是最大失誤?180
9.3 僅僅是一座橋梁嗎?180
9.3.1 在一個很長的時期我們還需要這座橋梁180
9.3.2 如果C++是答案,那麼問題是什麼?181
9.4 什麼能使C++更有效184
9.4.1 穩定性和標準184
9.4.2 教育和技術185
9.4.3 係統方麵的問題185
9.4.4 在文件和語法之外186
9.4.5 總結187
第2部分
第10章 存儲管理189
10.1 引言189
10.2 將存儲分配和初始化分離190
10.3 數組分配191
10.4 放置192
10.5 存儲釋放問題193
10.6 存儲器耗盡195
10.7 自動廢料收集196
10.7.1 可選的廢料收集196
10.7.2 可選擇的廢料收集應該是什麼樣子的?198
第11章 重載200
11.1 引言200
11.2 重載的解析201
11.2.1 細粒度解析201
11.2.2 歧義控製203
11.2.3 空指針205
11.2.4 overload關鍵字207
11.3 類型安全的連接208
11.3.1 重載和連接208
11.3.2 C++連接的一種實現209
11.3.3 迴顧210
11.4 對象的建立和復製212
11.4.1 對復製的控製212
11.4.2 對分配的控製213
11.4.3 對派生的控製213
11.4.4 按成員復製214
11.5 記法約定215
11.5.1 靈巧指針216
11.5.2 靈巧引用217
11.5.3 增量和減量的重載219
11.5.4 重載 ->*221
11.5.5 重載逗號運算符221
11.6 給C++增加運算符221
11.6.1 指數運算符221
11.6.2 用戶定義運算符223
11.6.3 復閤運算符225
11.7 枚舉226
11.7.1 基於枚舉的重載227
11.7.2 布爾類型227
第12章 多重繼承229
12.1 引言229
12.2 普通基類230
12.3 虛基類231
12.4 對象布局模型235
12.4.1 虛基布局237
12.4.2 虛基類和強製237
12.5 方法組閤238
12.6 有關多重繼承的論戰239
12.7 委托242
12.8 重命名243
12.9 基類和成員初始化245
第13章 類概念的精練247
13.1 引言247
13.2 抽象類247
13.2.1 為處理錯誤而用的抽象類248
13.2.2 抽象類型249
13.2.3 語法250
13.2.4 虛函數和構造函數251
13.3 const成員函數253
13.3.1 強製去掉const254
13.3.2 const定義的精練254
13.3.3 可變性與強製255
13.4 靜態成員函數256
13.5 嵌套的類257
13.6 Inherited::258
13.7 放鬆覆蓋規則260
13.8 多重方法264
13.9 保護成員267
13.10 改進代碼生成268
13.11 指嚮成員的指針269
第14章 強製轉換271
14.1 主要擴充271
14.2 運行時類型信息272
14.2.1 問題273
14.2.2 dynamic_cast運算符273
14.2.3 RTTI的使用和誤用278
14.2.4 為什麼提供一個“危險特徵”280
14.2.5 typeid()運算符281
14.2.6 對象布局模型284
14.2.7 一個例子:簡單的對象I/O285
14.2.8 考慮過的其他選擇287
14.3 強製的一種新記法290
14.3.1 問題290
14.3.2 static_cast運算符292
14.3.3 reinterpret_cast運算符293
14.3.4 const_cast運算符295
14.3.5 新風格強製的影響296
第15章 模闆298
15.1 引言298
15.2 模闆299
15.3 類模闆301
15.4 對模闆參數的限製303
15.4.1 通過派生加以限製304
15.4.2 通過使用加以限製305
15.5 避免代碼重復306
15.6 函數模闆307
15.6.1 函數模闆參數的推斷308
15.6.2 描述函數模闆的參數309
15.6.3 函數模闆的重載311
15.7 語法313
15.8 組閤技術315
15.8.1 錶述實現策略316
15.8.2 描述順序關係316
15.9 模闆類之間的關係318
15.9.1 繼承關係318
15.9.2 轉換320
15.9.3 成員模闆321
15.10 模闆的實例化322
15.10.1 顯式的實例化323
15.10.2 實例化點325
15.10.3 專門化329
15.10.4 查找模闆定義331
15.11 模闆的作用333
15.11.1 實現與界麵的分離334
15.11.2 靈活性和效率334
15.11.3 對C++其他部分的影響335
第16章 異常處理337
16.1 引言337
16.2 目標和假設338
16.3 語法339
16.4 結組340
16.5 資源管理341
16.6 喚醒與終止343
16.7 非同步事件346
16.8 多層傳播347
16.9 靜態檢查347
16.10 不變式350
第17章 名稱空間351
17.1 引言351
17.2 問題352
17.3 解決方案的思想354
17.4 一個解決方案:名稱空間355
17.4.1 有關使用名稱空間的觀點357
17.4.2 使名稱空間投入使用358
17.4.3 名稱空間的彆名359
17.4.4 利用名稱空間管理版本問題360
17.4.5 細節361
17.5 對於類的影響366
17.5.1 派生類366
17.5.2 使用基類368
17.5.3 清除全局的static368
17.6 與C語言的兼容性369
第18章 C語言預處理器371
索引375
· · · · · · (
收起)
評分
☆☆☆☆☆
講的是語言的設計。沒有語言設計基礎,錶示摸不著頭腦。。
評分
☆☆☆☆☆
已購.
評分
☆☆☆☆☆
這套書隻不過是重新齣版吧?內容應該沒改什麼
評分
☆☆☆☆☆
C++寫的不多,囫圇吞棗,但看瞭很有感觸。一個是作者本身對事情的嚴謹和苛刻態度,另一個是對使用者的友好和傾聽,而不是認為需要『天纔』纔能理解其設計。作者是實用主義者,傾聽並理解,而不是去說服。C++是一個語言,也可以看做是一個産品。
評分
☆☆☆☆☆
收獲可能沒有Essential C++收獲大。 可能好多精華地方看不懂。 不過增加瞭在C++道路上的勇氣,相信程序員。謝謝
評分
☆☆☆☆☆
1)前面几章综述内容,容易看明白。宏观带哲学思想。 2)后面涉及具体问题的章节,部分地方翻译术语确实拗口,比如第11章我真的看得直打瞌睡???? 3)原书94年写的,距离现在20多年过去了,C++新标准都增加了很多新内容,不知道这本书是否有更新的版本? 紫薯紫薯紫薯紫薯紫薯紫...
評分
☆☆☆☆☆
C++的最大包袱是和C兼容的那一块,而这一块,同时也是它的最大优势。BS这么说的,很多人也都这么说的。 然而我觉得,以现在的观点看,C++的这个包袱,已经严重制约了它的发展。它使得C++无法摆脱预编译的这个累赘。 C++0X的表达能力和便利性最多不超过D语言,但是学习的复杂度...
評分
☆☆☆☆☆
C++的历史很长了,长到能够写一本书了。这本书配合着《Masterminds of Programming》看效果会更好。 语言也不是一成不变的。不同的时代,即使在同一领域也总会出现不同的挑战。C的确是C++的包袱。看看现在的C++代码,再看看这本书里作为例子的C++代码,是不是又大不相同?94年...
評分
☆☆☆☆☆
C++的最大包袱是和C兼容的那一块,而这一块,同时也是它的最大优势。BS这么说的,很多人也都这么说的。 然而我觉得,以现在的观点看,C++的这个包袱,已经严重制约了它的发展。它使得C++无法摆脱预编译的这个累赘。 C++0X的表达能力和便利性最多不超过D语言,但是学习的复杂度...
評分
☆☆☆☆☆
差点错过这本书。英文版借来很久一直没看,因为中文版出现才有幸阅读。对于语言的使用者来说,有这样一本书真是巨大的福利。作者详细讲述了语言诞生的背景,以及发展过程中遇到和解决的各种问题。C++的复杂语言特性一直让人诟病,我之前也对其抱怨甚多。通过本书,一是了解到了...