(一)語言入門:
《C++ Primer》
最新版本:第三版(第四版國外已上架, 國內一些網上書店也在預訂中)
適合有豐富C經驗,缺乏C++經驗的。不過我個人一直認爲此書帶着過於強烈的C語言的痕跡,對於C++的學習未必是 好事。
《The C++ Programming Language》/《C++程序設計語言》
最新版本:第三版特別版
簡稱 TC++PL,有其他語言的豐富經驗的。(也有人簡稱之爲“TCPL”,但需與另一本《The C Programmer Language》區分開來)
《Essential C++》
《Accelerated C++》
這兩本薄一些,都是不錯的選擇。《Accelerated C++》本人沒有讀過,從各方面的評價來看,完全值得推薦。
以上幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,TC++PL是應該閱讀的。
(二) 進階A:
這個路線側重於語言本身
《Effective C++》
最新版本:第二版(第三版國外已上架,國內一些網上書店也在預訂中)
簡稱EC。C++程序員必讀! 很多時候,我們說C++聖經不是指TC++PL,而是這一本。《The Pragmatic Programmer》一書中寫到:“一旦你發現自己要參與C++項目的開發,趕快跑(不要走)到書店去購買Scott Mayer的《Effective C++》,可能還要《More Effective C++》”。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 編程規範》
個人認爲此書應爲C++程序員必備的案頭書。幾乎Effective系列和Exceptional系 列都在這裏得到了總結。最新的模版、異常的業界經驗都在這裏的到了體現。可能的唯一缺陷就是對一個新手而言,關於“爲什麼這麼做”的問題,解釋的不夠。
我 的看法是:如果你不理解其中的條款,記憶,並且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我認爲這本書中的內容至少在2009年以前都不 會過時,人們將廣爲傳誦它制定的101條戒律。
還不知道他的簡稱,也許“101”會成爲一個候選者?
提到《Effective C++》,那麼另外三本書一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新書《Exceptional C++ Style》也是值得一看的好書。
上 述幾本書,一本也不應該放過。
個人建議上述書籍按順序閱讀。並且,在將來反覆閱讀這幾本書。
(三)進階B:
這 個路線側重於程序庫。
《The C++ Standard Library》/《C++標準程序庫—自修教程與參考手冊》
聽說過STL嗎?這本書會教你最基本 的,也是最重要的STL的使用。這本書,應該是必讀的。
《Effective STL》
會使用STL還不夠,還必須知道什麼時候選擇什麼STL組件,這是STL使用的必讀書。
《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型編程與STL》。
這本書理論性較強,但是真的很嚴謹,而且並不是非常難懂。理解其 中對於Concept的解釋,將是非常重要的。
《C++ STL》
這不是講述使用程序庫的,而是講述程序庫實現原理的。腸胃不好的,需要慢慢吸收。
這個路線的書,仍然是建議按順序閱讀。
進階A、進階B兩個路線應該是可以並行的。
其他進階參考書
提 出這些參考書,只是避免爭議,也爲開闊視野,筆者並不曾完全讀過所有的。
《Thinking in C++》/《C++編程思想》
這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果確有興趣,不妨嘗試 一下該書。
以下幾本書基本上涉及的都是語言本身,大體上可以按照以下的順序閱讀。
《C++必知必會》
如果早一年,這本書將是重量級的,然而它被101和《Exceptional C++ Style》蓋過一頭。
《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程序設計陷阱》
這又是一本我未曾讀過,而且廣受好評的書。
《STL 源碼剖析》
這本書我剛到手,就被人"借"走,以至於到現在也沒有看過。看過這本書的朋友,可以給一個合適的評價。
高級:
《The Design and Evolution of C++》/《C++語方的設計和演化》
簡稱D&E,內 容並不艱深,Bjarne的書,僅此,就值得一讀。
前段時間,互動網曾8塊一本(人民幣)賤賣此書,現在好像沒了。
《Inside The C++ Object Model》/《深度探索C++對象模型》
C程序員讀後一定會覺得C++原來並不神祕。
《C++ Template》
在閱讀STL、Boost或者Loki的源代碼之前,請仔細閱讀本書,它可以減輕一些閱讀的煩惱。這本書是討 論C++模版的權威。
《Modern C++ Design Generic Programming and Design Patterns Applied》/《C++設計新思維——泛型編程與設計模式之應用》
簡稱MCD。在閱讀MCD之前,建議先閱讀一下《C++ Template》。
《對象揭祕:Java、Eiffel和C++》
你對C++不滿嗎?這本書可以部分地幫你完成抱怨的目標。也許它還可以讓你不迷信C++。
最後,一份C++標準文檔也是應該加以咀嚼的。
還有一些書籍,並不能簡單的歸於C++,也難以在純粹的書本學習中加以掌握。 《Design Patterns》/《設計模式》一書就歸於此類。
最 後,編程語言並非計算機科學技術的全部,尤其對於在校的學生來說,打好基礎、開闊視野都是非常重要的。
**************************************************************
有幾本書,需要說明一下的。
《Multi-Paradigm Design For C++ 》,這本書有些陳舊,也許在出版的年代還是很優秀的,現在,這樣的書已經完全可以被推薦書目覆蓋了。最重要的是,書中的某些觀點今天已經不合時宜了。
《C++編程慣用法》這是一本如雷貫耳的書,可惜,這本書是1992年出版的,書中的很多內容,已經被後來的作品覆蓋,而且講述得更全面嚴謹。另 外,該書中對於C++的認識,在今天看來,已經過時甚至成爲錯誤的觀點。因此,只適合已經通曉C++的人蔘考。
《深入淺出MFC》
這是一本講述如何使用MFC庫的書。今天,MFC日漸式微,而且,MFC所使用的C++技術也是一直爲人所詬病的。書確實是不錯的,但是,學習C++並不 一定要學習MFC。因此,對於學習C++而言,這本書不是必須。
《The Art Of C++》
老實說,我對這本書的評價一般般。而且,“Art”名不副實,有翻譯成《C++實戰》,到是更確切一些。
《大規模C++編程》
這是一本重要的書,特別是對於缺乏大規模C++軟件開發的人來說,尤其如此。但是,這本書的中文版翻譯太差勁了。這是一本關於工程的書,因此,並不是 C++學習必備的。另外,書中的觀點略嫌保守,對於最新的C++技術運用不多。
《Imperfect C++》
這是一本基礎於實踐結合的書,確實很優秀,而且所講內容並不很難。但是從學習C++的角度而言,理解這本書需要許多的實踐經驗。推不推薦,屬於兩難的一本 書。
《C++ Primer》和《TC++PL》都不適合初學者
這個書目的目標是:幫助一個人在C++領域儘快地登堂入室,幫助一個人成爲合格的C++程序員。
這個書目不適合下列目標:應付各類計算機考試,應付面試,快速瞭解C++。
《C語言參考手冊(原書第5版)》 ---- 作爲參考書,沒錯的
引用China-pub上的介紹:
本書是經典C語言參考手冊的最新版,在強調正確性、可移植性和可維護性的基礎上,對C語言的具體細節、運行庫以及C語言編程風格做了完整、準確的描述。本 書涵蓋了傳統C語言、C89、C95、C99等所有C語言版本的實現,同時討論了C++與C語言兼容的部分。全書自上而下介紹了C語言的詞法結構、預處理 器、聲明、類型表達式、語句、函數和運行庫,是所有C語言編程人員必備的參考書。 這本暢銷的權威參考手冊對C語言的基本概念和運行庫提供了完整的描述,同時還強調了以正確性、可移植性和可維護性爲根本出發點的良好的C語言編程風格,被
國外衆多高校廣泛採用爲教材或教學參考書,本書描述了C語言各個版本的所有細節,是C語言編程人員和實現者惟一必備的參考手冊。最新的第5版經過修訂和更 新,融入了最新C語言標準ISO IEC 9899:1999的完整描述,包括強大的語言擴展和新的函數庫。 Web站點www.CAReferenceManual.com中包 含了本書較長示例的源代碼、對C語言爭論點的深入討論、最新ISO
IEC語言標準修訂以及其他重要C語言資源的鏈接。本書作爲參考手冊,提供了非常詳細、清晰的c語言描述:
●標準C語言(1999):是標準C語言的新版本,支持複數類型與布爾類型、變長數組、精確浮點 數編程和具有可移植性與國際化的新的庫函數
●標準以C語言(1989):當前大多數編程人員使用的C語言版本
●傳統C語言:1990年之前常用的版本,還有幾百萬行代碼正在使用
●C++兼容C語言:可以同時在C語言與C++中使用的代碼
●所有C語言版本的完整運行庫
《C語言的科學與藝術》 --- 非常好的一本書,現在也有中文版
引用China-pub上的介紹:
本書是計算機科學的經典教材,介紹了計算機科學的基礎知識和程序設計的專門知識。本書以介紹ANSI C爲主線,不僅涵蓋C語言的基本知識,而且介紹了軟件工程技術以及如何應用良好的程序設計風格進行開發等內容。本書採用了庫函數的方法,強調抽象的原則, 詳細闡述了庫和模塊化開發。此外,本書還利用大量實例講述解決問題的全過程,對開發過程中常見的錯誤也給出瞭解決和避免的方法。本書既可作爲高等院校計算 機科學入門課程及C語言入門課程的教材,也是C語言開發人員的極佳參考書。
《C語言接口與實現:創建可重用軟件的技術》
引用China-pub上的介紹:
本書概念清晰、內容新穎、實例詳盡,是一本有關設計、實現和有效使用C語言庫函數,掌握創建可重用C語言軟件模塊技術的參考指南。本書倡導基於接口的C語 言設計理念及其實現技術,深入詳細地描述了24個C語言接口及其實現。
本書通過敘述如何用一種與語言無關的方法將接口的設計與實現獨立開來,從而形成一種基於接口的設計途徑來創建可重用的API,本書是一本針對C語言程序員 的不可多得的好書,也是值得所有希望掌握可重用軟件模塊技術的讀者閱讀的參考書籍。關於如何設計、實現和有效使用庫函數的指南少之又少(如果說還有的 話)。這本力作填補了這個空白。它可以作爲下一代軟件的工具書.所有的C語言程序員都應該閱讀。 ——W.Richard Stevens
“我向每位專業C語言程序員推薦這本書。C語言程序員們忽視書中所描述的各種技術已經太長時間了。” ——Norman Ramsey,貝爾實驗室研究員
《C程序設計語言(第2版·新版)》
引用China-pub上的介紹:
本書是由C語言的設計者Brian W. Kernighan和Dennis M. Ritchie編寫的一部介紹標準C語言及其程序設計方法的權威性經典著作。全面、系統地講述了C語言的各個特性及程序設計的基本方法,包括基本概念、類 型和表達式、控制流、函數與程序結構、指針與數組、結構、輸入與輸出、UNIX系統接口、標準庫等內容。
本書的講述深入淺出,配合典型例證,通俗易懂,實用性強,適合作爲大專院校計算機專業或非計算機專業的C語言教材,也可以作爲從事計算機相關軟硬件開 發的技術人員的參考書。 在計算機發展的歷史上,沒有哪一種程序設計語言像C語言這樣應用如此廣泛。
本書原著 即爲C語言的設計者之一Dennis M.Ritchie和著名的計算機科學家Brian W.Kernighan合著的 一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程序設計的教材和專著均以 此書爲藍本。原著第1版中介紹的C語言成爲後來廣泛使用的C語言版本—— 標準C的基礎。人們熟知的“hello, World”程序就是由本書首次引入的,現在,這一程序已經成爲所有程序設計語言入門的第一課。原著第2版根據1987年制定的ANSIC標準做了適當的 修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、準確地講述了C語言的各
個特性以及程序設計的基本方法。對於計算機從業人員來說,本書是一本必讀的程序設計語言方面的參考書。