本書基于作者在知名技術雜志發表的技術文章、世界各地發表的演講以及斯坦福大學的課程講義整理、寫作而成,融聚了作者10多年C++程序生涯的真知灼見。 全書分為6篇32章,分別對C++語言的歷史和特點、類和繼承、STL與泛型編程、庫的設計等幾大技術話題進行了詳細而深入的討論,細微之處幾乎涵蓋了C++所有的設計思想和技術細節。全書通過精心挑選的實例,向讀者傳達先進的程序設計的方法和理念。 本書適合有一定經驗的C++程序員閱讀學習,可以幫助讀者加強提高技術能力,成為C++程序設計的高手。
十年編程生涯的真知灼見;
著名技術伉麗的C++觀點...
凱尼格,AT&T大規模程序研發部(前貝爾實驗室)成員。他從1986年開始從事C語言的研究,1977年加入貝爾實驗室。他編寫了一些早期的類庫,并在1988年組織召開了及時個具有相當規模的c++會議。在ISO/ANSI c++委員會成立的1989年,他就加入了該委員會,并一直擔任項目編輯,他已經發表了c++方面的100多篇論文,在Addsion-Wesley出版了C Traps and pitfalls一書(中文版名為《c缺陷與陷阱》,由人民郵電出版社出版),還應邀到世界各地演講。
目錄
第0章序幕1
0.1及時次嘗試1
0.1.1改進2
0.1.2另一種改進3
0.2不用類來實現4
0.3為什么用C++更簡單5
0.4一個更大的例子6
0.5結論6
及時篇動機
第1章為什么我用C++11
1.1問題11
1.2歷史背景12
1.3自動軟件12
1.3.1性與通用性13
1.3.2為什么用C14
1.3.3應付快速增長15
1.4進入C++15
1.5重復利用的軟件20
1.6后記21
第2章為什么用C++工作23
2.1小項目的成功23
2.1.1開銷24
2.1.2質疑軟件工廠24
2.2抽象25
2.2.1有些抽象不是語言的一部分26
2.2.2抽象和規范26
2.2.3抽象和內存管理27
2.3機器應該為人服務28
第3章生活在現實世界中29
第二篇類和繼承
第4章類設計者的核查表37
第5章類47
5.1問題47
5.2經典解決方案48
5.3虛復制函數49
5.4定義類50
5.5小結53
第6章句柄:及時部分55
6.1問題55
6.2一個簡單的類56
6.3綁定到句柄58
6.4獲取對象58
6.5簡單的實現59
6.6引用計數型句柄60
6.7寫時復制62
6.8討論63
第7章句柄:第二部分67
7.1回顧68
7.2分離引用計數69
7.3對引用計數的抽象70
7.4存取函數和寫時復制73
7.5討論73
第8章一個面向對象程序范例75
8.1問題描述75
8.2面向對象的解決方案76
8.3句柄類79
8.4擴展1:新操作82
8.5擴展2:增加新的節點類型85
8.6反思86
第9章一個課堂練習的分析(上)89
9.1問題描述89
9.2接口設計91
9.3補遺93
9.4測試接口94
9.5策略95
9.6方案96
9.7圖像的組合99
9.8結論102
第10章一個課堂練習的分析(下)103
10.1策略103
10.1.1方案104
10.1.2內存分配105
10.1.3結構構造107
10.1.4顯示圖像110
10.2體驗設計的靈活性116
10.3結論119
第11章什么時候不應當使用虛函數121
11.1適用的情況121
11.2不適用的情況122
11.2.1效率122
11.2.2你想要什么樣的行為125
11.2.3不是所有的類都是通用的127
11.3析構函數很特殊127
11.4小結129
第三篇模板
第12章設計容器類133
12.1包含什么133
12.2復制容器意味著什么134
12.3怎樣獲取容器的元素137
12.4怎樣區分讀和寫138
12.5怎樣處理容器的增長139
12.6容器支持哪些操作141
12.7怎樣設想容器元素的類型141
12.8容器和繼承143
12.9設計一個類似數組的類144
第13章訪問容器中的元素151
13.1模擬指針151
13.2獲取數據153
13.3遺留問題155
13.4指向const Array的Pointer159
13.5有用的增強操作161
第14章迭代器167
14.1完成Pointer類167
14.2什么是迭代器170
14.3刪除元素171
14.4刪除容器172
14.5其他設計考慮173
14.6討論174
第15章序列175
15.1技術狀況175
15.2基本的傳統觀點176
15.3增加一些額外操作181
15.4使用范例184
15.5再增加一些188
15.6請你思考190
第16章作為接口的模板191
16.1問題191
16.2及時個例子192
16.3分離迭代方式192
16.4遍歷任意類型195
16.5增加其他類型196
16.6將存儲技術抽象化196
16.7實證199
16.8小結200
第17章模板和泛型算法203
17.1一個特例204
17.2泛型化元素類型205
17.3推遲計數205
17.4地址獨立性207
17.5查找非數組208
17.6討論210
第18章泛型迭代器213
18.1一個不同的算法213
18.2需求的分類215
18.3輸入迭代器216
18.4輸出迭代器216
18.5前向迭代器217
18.6雙向迭代器218
18.7隨機存取迭代器218
18.8是繼承嗎220
18.9性能220
18.10小結221
第19章使用泛型迭代器223
19.1迭代器類型224
19.2虛擬序列224
19.3輸出流迭代器227
19.4輸入流迭代器229
19.5討論232
第20章迭代器配接器233
20.1一個例子233
20.2方向不對稱性235
20.3一致性和不對稱性236
20.4自動反向237
20.5討論240
第21章函數對象241
21.1一個例子241
21.2函數指針244
21.3函數對象246
21.4函數對象模板248
21.5隱藏中間類型249
21.6一種類型包羅萬象250
21.7實現251
21.8討論253
第22章函數配接器255
22.1為什么是函數對象255
22.2用于內建操作符的函數對象256
22.3綁定者(Binders)257
22.4更深入地探討258
22.5接口繼承259
22.6使用這些類260
22.7討論261
第四篇庫
第23章日常使用的庫265
23.1問題265
23.2理解問題:第1部分267
23.3實現:第1部分267
23.4理解問題:第2部分270
23.5實現:第2 部分270
23.6討論272
第24章一個庫接口設計實例275
24.1復雜問題276
24.2優化接口277
24.3溫故知新279
24.4編寫代碼280
24.5結論282
第25章庫設計就是語言設計283
25.1字符串283
25.2內存耗盡284
25.3復制287
25.4隱藏實現290
25.5缺省構造函數292
25.6其他操作293
25.7子字符串295
25.8結論296
第26章語言設計就是庫設計297
26.1抽象數據類型297
26.1.1構造函數與析構函數297
26.1.2成員函數及可見度控制299
26.2庫和抽象數據類型299
26.2.1類型安全的鏈接(linkage)299
26.2.2命名空間300
26.3內存分配302
26.4按成員賦值(memberwise assignment)和初始化303
26.5異常處理305
26.6小結306
第五篇技術
第27章自己跟蹤自己的類309
27.1設計一個跟蹤類309
27.2創建死代碼312
27.3生成對象的審計跟蹤313
27.4驗證容器行為315
27.5小結320
第28章在簇中分配對象321
28.1問題321
28.2設計方案321
28.3實現324
28.4加入繼承326
28.5小結327
第29章應用器、操縱器和函數對象329
29.1問題329
29.2一種解決方案332
29.3另一種不同的解決方案332
29.4多個參數334
29.5一個例子335
29.6簡化337
29.7思考338
29.8歷史記錄、參考資料和致謝339
第30章將應用程序庫從輸入輸出中分離出來341
30.1問題341
30.2解決方案1:技巧加蠻力342
30.3解決方案2:抽象輸出343
30.4解決方案3:技巧而無蠻力345
30.5評論348
第六篇總結
第31章通過復雜性獲取簡單性351
31.1世界是復雜的351
31.2復雜性變得隱蔽352
31.3計算機也是一樣353
31.4計算機解決實際問題354
31.5類庫和語言語義355
31.6很難使事情變得容易357
31.7抽象和接口357
31.8復雜度的守恒358
第32章說了Hello world后再做什么361
32.1找當地的專家361
32.2選一種工具包并適應它362
32.3C的某些部分是必需的362
32.4C的其他部分不是必需的364
32.5給自己設一些問題366
32.6結論368
附錄Koenig和Moo夫婦訪談371
索引377
學習C++知識盲點和注意點的絕對好書,比中國同種書籍好太多了
還沒有詳細看,以前一個牛人推薦的,最好是寫過C++項目之后才看!
適合有一定C++編程經驗的人看,著重于編程思想,很受用。
這本書是C++中的經典。能夠像Andrew一樣找到Moo這樣的老婆就好了啊...
學C++不能只看技巧性的書籍,還應多學學別人的經驗和思想,此書很經典
好書,紙質也好,內容實用性強,對于編程中經常性所犯的錯誤有很好的指導性
對C++的某些細節進行了系統描述!值得慢慢品味!
C++進階必備書籍,至于這本書都多好,大家有目共睹。
推薦給至少有四年C++職業程序設計經驗的程序員精讀.
經典書籍入手收藏,慢慢品味,努力對c++越來越深入理解。
對C++學習中容易犯的錯誤和C++內容的深思, 很贊的一本書
非常經典的書,但是需要有一定的C++項目經驗的開發者閱讀,如果是初學者,還是選其他的吧。因為這本書,并不是一本語法的書籍,而是作者多年來開發經驗的匯總。不錯~
《C++沉思錄》和《深度探索 C++ 對象模型》兩書配套,搞定了這兩書,C++就應該具有相當的功力了。
用C++已有很多年了,這本書以前看過電子版,但感覺不是很深刻,有些地方對作者所講并沒有太深的體會;最近剛好有時間,好好溫習了幾位大師的經典著作,還是受益匪淺,感覺自己的功力更上一個臺階了,感覺很好!
選擇C++就要了解他的一切,這本書讓我們更加理性的去認識C++使用C++
讀完之后確實有收獲,這本書不像是一本教材,更像是一本作者的心得體會。書中教你如何真正利用C++進行面向對象的編程,或者說是如何用面向對象的方法來分析問題。并且很大篇幅的討論了C++中很多高級的用法,教你如何使用C++中一些高級的特性
各方面都很好,唯一不足就是沒有pos機!買的時候填的是用pos機,結果還是付的現金。。。
用一門語言編程、深入一門語言編程,這是一個晉級的過程。
通過簡單的實例,作者將c++在面向對象方面的特點一一道明
很值得去反復讀的一本書,適合有一定編程基礎的人...
學習c++好久了,看過了c++作者寫的,和編程思想,回過頭看看c++還能學到什么,也許是c++之所以長盛不衰,或者其他語言超過c++的原因,值得好好看一下。
有別于那種系統的將C++,這本書很好找到了自身的定位,也是在看完一般教材后,才能有所領悟其中道理,我想這本書絕對值得我去品讀,而且不止一次
之前買過一本C++Primer。對比前者繁瑣細致的、對每個知識點的詳細講解,本書就像是期末考試前老師劃的重點,很有實用價值。
不可不讀的好書,學習C++,熟練掌握基本語法,面向對象的基本概念,能夠實現自己想要的東西是一回事,但能夠寫出安全、穩定、高效、接口簡潔、分離度高且可擴展性強的高質量程序又是另一回事。相信相當一部分人還是處于前面一種,一般規模的程序,能夠實現預定功能,但效率低下,穩定性差不是很很容易被發現,因而經常被忽略。但對于較大規模的軟件領域時,這些問題會突顯,對于產品質量往往是致命的。 此外,養成一個良好編程素養也是至關重要的,幾天內讀完一本講解C++用法書,能力很快會有較大提升。但好的編程習慣不是幾天內就學得來的,是一個長期的潛移默…