C++學習書籍

階段 1
《Essential C++》
下載地址:http://download.csdn.net/detail/jerryjbiao/4144693
這是一本內容很少但很實用的C++入門書籍,強調快速上手與理解C++編程。本書主要圍繞一系列逐漸複雜的程序問題,以及用以解決這些問題的語言特性展開講解。你不僅學到C++的函數和結構,也會學習到它們的設計目的和基本原理。
《C++ Primer》
《C++ Primer第四版》下載地址:http://download.csdn.net/detail/jerryjbiao/3672134
本書對C++基本概念、技術、以及現代C++編程風格進行了全面並且權威的闡述,是C++初學者的最佳指南;本書能夠幫助你編寫實用的程序,而無需首先精通每一個語言細節。對於中高級程序員,本書也是不可或缺的參考書。
《C++ Primer Plus 》
《C++ Primer Plus 第六版》中文版下載地址:http://www.linuxidc.com/Linux/2014-05/101227.htm
C++是在C語言基礎上開發的一種集面向對象編程、通用編程和傳統的過程化編程於一體的編程語言,是C語言的超集。《C++ PrimerPlus中文版》由Stehpen Prata著,張海龍、袁國忠譯:是根據2003年的ISO/ANSIC++標準編寫的。經過大量短小精悍的程序詳細而全面地闡述了C++的基本概念和技術。全書分爲18章和10個附錄,分別介紹了C++程序的運行方式、基本數據類型、複合數據類型、循環和關係表達式、分支語句和邏輯操做符、函數重載和函數模板、內存模型和名稱空間、類的設計和使用、多態、虛函數、動態內存分配、繼承、代碼重用、友元、異常處理技術、string類和標準模板庫、輸入/輸出等內容。
階段 2
《Effective C++》和《More effective C++》
做者是Scott Meyers。你應該熟讀它們,並清楚地理解每一個項目。該書圍繞55條準則,每一條都介紹了一個可以讓你寫出更好的C++程序代碼的方法,並以特別設計過的例子詳加討論。
《Exceptional C++(C++編程剖析)》和《More exceptional C++》
這兩本書中都包含了40個C++編程問題,這些問題會讓你磨練本身的技能,最終成爲優秀的C++程序員。這些問題是Herb Sutter精心挑選,與ISO/ANSI C++官方標準相一致,幫助程序員在設計、架構和編碼過程當中保持良好的風格,從而使編寫的C++軟件更健壯、更高效。
階段 3
《Inside the C++ object model(深度探索C++對象模型)》
本書專一於C++面向對象程序設計的底層機制,包括結構式語意、臨時性對象的生成、封裝、繼承,以及虛擬——虛擬函數和虛擬繼承,幫助你理解程序的底層實現,以便寫出更高效的代碼。
《The design and evolution of C++(C++語言的設計與演化)》
本書做者也是C++語言的設計者Bjarne Stroustrup,做者在書中綜合性地介紹了C++的發展歷史,C++中各類重要機制的本質意義和設計背景,這些機制的基本用途和使用方法,討論了C++所適合的應用領域及其將來的發展前景,既沒有忽略關鍵性的詳情,又沒有過多地陷入技術細節。
階段 4
《The C++ standard library(C++標準程序庫)》
這是標準模板庫字典,你能夠在本書中找到STL相關的一切知識。本書焦點放在標準模板庫、檢查容器、迭代器、函數對象和STL算法上。每個元素都有深入的呈現,包括其介紹、設計、運用實例、細節解說、陷阱、意想不到的危險,以及相關類別和函數等。
《Effective STL》
這是Scott Meyers的第三本C++專著,也是學習STL最權威的書籍。做者對書中的50個指導方針都做了詳盡的分析,並配以示例。經過這些規則,C++開發者能夠最大限度地使用STL。
《Generic programming and the STL(泛型編程與STL)》
本書闡述了泛型程序設計的核心理念:concepts(概念)、modeling(模型)和refinement(改善),併爲你展現這些觀念如何導出STL的基礎概念:iterators(迭代器)、containers(容器)和function objects(函數對象)。按照本書所述,你能夠把STL想象成一個由concepts組成的library,你將學習到STL正式結構並理解其強大的優點。
階段 5
《Exceptional C++ style》
做者爲Herb Sutter。本書一樣提出了40個C++風格相關的問題,對一些相當重要的C++細節和相互關係提出了新的看法,爲當今的關鍵C++編程技術(如泛型編程、STL、異常安全等)提供了新的策略,幫助開發者在開銷與功能之間、優雅與可維護性之間、靈活性與過度靈活之間尋找完美的平衡點。
《C++ template》
這是一本關於C++模板的完整的參考手冊和教程,它強調模板的使用實踐,包含了現實世界中的例子。每一個C++程序員都應該好好讀一讀這本書。
《Modern C++ design(現代C++設計)》
做者Andrei Alexandrescu爲C++程序員打開了一個新的局面。本書提供了一些針對軟件設計的前沿方法,如聯合設計模式、泛型編程,使程序員能夠編寫有表現力的、靈活的、高度可重用的代碼。
《Thinking in C++(C++編程思想)》
C++ 領域權威著做,介紹了C++實用的編程技術和最佳的實踐方法。
 
**********************************************************************************************************************
轉自http://www.cnblogs.com/cutepig/archive/2009/02/26/1399032.html
(一)語言入門:
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》/《設計模式》一書就歸於此類。

全部上述的書籍,要麼談論C++語言自己,要麼談論STL的,要麼兼而有之(固然嚴格講STL也是C++語言很是重要的一部分)。偶爾,某些書中條目也會涉及實際工程。這些書並非C++軟件開發的所有,可是他們很重要。閱讀這些書,未必須要化費太多的精力,有時候是會困難,但也有時候會很快速。
最後,編程語言並不是計算機科學技術的所有,尤爲對於在校的學生來講,打好基礎、開闊視野都是很是重要的。 


即將問世的經典《C++ Template Metaprogramming》開放章節翻譯及
http://blog.csdn.net/pongba/category/39865.aspx

經典以後的經典 
——寫在C++圖書出版史上又一部經典著做問世以前
劉未鵬(pongba) /文

C++圖書界沉寂久矣!

至少我是這麼認爲的。國內引進第一批C++經典書籍的時候我是親歷的。感受真是「忽如一晚上春風來,千樹萬樹梨花開」。別誤會,我說的這個第一批並不是 《C++ Programming Language》《C++ Primer》這種經典中的經典。而是說諸如《Exceptional C++》《More Exceptional C++》《Effective&More Effective C++》《C++ Gotchas》《Generic Programming and the STL》《The C++ Standard Library》《C++ Templates》《Morden C++ Design》等。其中《Modern C++ Design》是最爲激動人心的著做。學泛型而不讀該著做就好像學算法不讀D.E的《The Art of Compute Programming vol.1.2.3》同樣,沒法達到更高的境界。我只記得當時拿到這本書從早晨9點一直看到晚上22點,兩頓飯都沒有吃,如癡如醉。正由於這本書太經典, 也太前衛了,因此我看完內心就暗暗的下了個結論「C++圖書界將好久不會出現這樣激動人心的著做了」。果真,後來出的一些如《Accelerate C++》《Applied C++》《C++ Network Programming vol.1.2》等,雖然也堪入經典之列,可是畢竟沒有使人十分振奮的內容了。

然而,C++泛型技術的發展卻一刻也沒有中止過,boost庫的不斷更新將C++泛型技術逐漸推進到了一個新的高峯,原先在《Modern C++ Design》中的有些前衛有些學院派的技術到了boost庫中終於和實踐緊密結合到了一塊兒,泛型的抽象本質發揮了其驚人的力量,因而boost庫裏出現 了一個又一個具備高度可複用性和定製性的泛型構件。泛型經過boost庫終於漸漸貼近了程序員的生活。

若是說C++泛型是那隻壓在五行山下的孫猴子,那麼《Modern C++ Design》就揭開了山上的封印,釋放了這猴頭驚人的力量,而boost庫則是孫悟空頭上的那道金箍,約束並引導着它向正確的方向走,作正確的事。雖然 有這道金箍,但它的力量卻一點也沒有削弱,甚至更強,只不過在被磨掉棱角的同時日趨成熟了而已。

然而,遺憾的是,雖然boost庫中隨處可見精緻的泛型應用,能夠說是一本源碼教科書,正如Linux源代碼之與程序員,可是「沒有三兩三,別想過樑山 」,並不是每一個人都可以讀懂其源代碼,甚至一個對泛型頗爲了解的程序員也會在其中迷途難返。這是由於boost庫爲了在大部分主流編譯器上都能經過編譯,作 了不少的workaround,而且,爲了節省代碼量,boost庫中隨處可見大片大片的宏,這些宏就像迷宮,源代碼的迷宮。這兩個緣由都使得boost 的源代碼可讀性較差。

所以,boost庫雖然貼近了程序員,boost庫的源代碼卻愈發遠離了程序員。

可是,在C++泛型領域已經登堂入室,欲更進一步,一窺堂奧者卻非得閱讀像boost這樣經典的源代碼不可。「熟讀唐詩三百首,不會吟詩也會吟」。

雖然boost庫的源代碼的可讀性較差,但也並不是極差,若是有人事先爲你透徹講解boost庫中的泛型運用和設計理念,相信你必定會在閱讀時遊刃有餘。

這就是了——一本即將出版的經典之做,由boost的發起者之一,C++標準委員會的成員David Abraham以及另外一位boost成員Aleksey Gurtovoy合著的——《C++ Template Metaprogramming:Concepts,Tools,and Techniques from Boost and Beyond》。

對於這麼一本勢必成爲經典的書,我實在惶於評價,仍是引用其主頁上面的一段話吧:



這本講述C++模板元編程的書將賦予C++用戶空前的強大能力,並使這門技術成爲程序員手中真正實用的一門技術。

This book covers C++ Template Metaprogramming in a way that provides unprecedented capability to the C++ power-user, and delivers practical metaprogramming into the hands of the everyday programmer.



一直以來,C++泛型彷佛總處於一種奇怪的位置,有人說它太學院派,有人認爲那太遙遠,如今還用不到它,有人認爲那是庫的設計者的事情,與程序員關係不 大。更有人持「不敢高攀」的態度。其實這些都是錯誤的態度,泛型是一門由來已久的思想,其核心理念是抽象,並無什麼神祕之處。與面向對象提供的二進制復 用相比,泛型的代碼提供了源碼級的複用,一個具備更強的動態特性,一個具備更強的類型安全性和效率,二者互補才能發揮最大的力量。已經出版的不少關於 C++泛型的經典書籍其實已經很好的介紹了這一點。只不過,關於C++泛型,還有一門能夠獨立出來的技術——模板元編程。而這偏偏是令泛型構件更具表達力 和自由度的技術。甚至也能夠說是boost庫的基石之一(除了部分對泛型依賴不強的組件如Regex等例外)。因此,顯而易見這是一門很是重要的技術,這 一點從《Generative Programming》一書中也可看出。

然而,對於這門能夠獨立出來的技術,目前咱們所看到的只是一些零星的描述,《C++ Templates》裏面雖有一整章描述metaprogram,但對於渴求知識者仍如隔靴搔癢,不能盡興。不過,這種狀況就快過去了,《C++ Template Metaprogramming》將會系統的講述C++模板元編程技術,將這門原先只是大師們手中的利器的神祕技術帶到普通程序員的手中,賦予普通程序員 驚人的力量。

若是說《Modern C++ Design》是C++泛型書籍上的經典之做(它的確是),那麼這本即將道來的《C++ Template Metaprogramming》將是經典以後的又一次經典!



做者開放了該書的第三章和附錄A。雖然只有兩章,可是精彩紛呈,絕對值得一讀。下面是個人翻譯,一是出於本身的興趣,二是方便讀者。



第三章 深度探索元函數

http://blog.csdn.net/pongba/archive/.../01/90642.aspx
相關文章
相關標籤/搜索