算起來,用C++已經有七八年時間,也有點可以分享的東西;
以下推薦的書籍大多有電子版。對於技術類書籍,電子版並不會帶來一個好的閱讀體驗。如果喜歡,最好找紙版(圖書館是個好去處);電子版更適合作為一個參考書籍常備電腦。
我將分為基礎篇、Windows篇、和Linux/Unix篇 三個部分來介紹這些經典書籍:
C++入門
我的C++入門讀物是《
C++大學教程》,這本書800多頁,由於學習時間長,一個學期學這么一本書,時間上的富裕,讓我有充分的時間來吸收。書中80%的代碼我都敲到PC上運行過;后來再看《C++ primer》的時候,也就一個星期的功夫翻完了。都是入門讀物,介紹的也都全面。剛接觸C++的朋友,至少應該將這方面的書好好過一遍。
語言技巧,性能優化
有了語言基礎之后,接着就是細節上的深入,進一步領會C++的精髓。《
Effective C++》可以看作是一本C++ 疑難解惑手冊; 對於C++語言層次深入一點的東西,容易出錯的知識點,在這邊書上可找到滿意解答;適合多次品味。
《
C++必知必會》《
More Effective C++》則作為對Effective C++ 沒有講完的補充,可看作前者看完后意猶未盡時使用;
順便說下,這三本書都不厚,小冊子,每本也就幾天的功夫就可以搞定;
底層硬貨
C++源於C,對於指針、對於各種地址的偏移計算,對於大端小端的深刻剖析,還得靠一些硬通貨來解析;這兩本書雖說不厚,但讀起來確實費勁,信息量很足,很多都是在平時C++使用中沒有意識到的知識點,卻又都是重要的點。讓人有知其所以然的快感;
涉及到底層的東西,都是用來驗證編程功底是否扎實。要想徹底掌握C++底層的東西,還是得看看專家編程,很好的兩本書,指針等講的很透徹。
STL
《
C++標准程序庫》
《
泛型編程與STL》
《
STL源碼剖析》
《
C++標准程序庫》是屬於百科全書類型,講解基礎,但語言平淡(是以參考手冊的角度來寫的),沒有勇氣將其全部翻完,撿感興趣的和自己很缺乏的部分看了看(里面關於智能指針方面的論述,還不錯);
《
泛型編程與STL》里面對萃取機制及各泛型的概念論述非常透徹,前6章為主要篇章,不可跳過。后面的可在實踐中編碼練習或查找。 后面章節可在看完之后做為手冊使用,對STL中的常用算法和容器進行了歸類講解,並給出了相當數量的示例。
《
STL源碼剖析》每一個推薦深入STL的文章應該都少不了這本書。下面幾個問題可以考查一下是否需要看看: 1.STL中DQueue的實現機制(數據結構式如何組織的,其迭代器的插入和刪除過程中的實現) 2.是否熟悉紅黑樹,能否敘述其插入和刪除過程,如何調整。 3.萃取器的幾種實現
Boost
當標准庫無法再滿足你的時候,就輪到Boost出場了。編程,講究兩個效率,一是開發效率,二是運行效率。與其它編譯型語言相比(java、C#等),C++屬於后者,運行效率不錯,但開發效率着實低。除了C++更底層的原因外,另一方面的原因就是標准庫提供的功能不足。沒有太多的工具,想實現什么都得自己來一遍,重復的造輪子的工作在程序員中不斷上演;
Boost庫是對C++標准庫的擴展,讓我們在開發的過程中有更多的工具可以選擇。正則表達式、智能指針等工具都是非常有用的工具,而函數對象,Lambda則讓我們在編寫C++的代碼中更為優雅;
這里提供的一本書是Boost的入門經典。它的目的就是讓你對boost產生興趣。等有了興趣之后,就直接上boost的官網吧,需要什么盡管拿。
設計模式
《
設計模式》
《
設計模式精解》
《
道法自然》
《
設計模式》是該領域的聖經,未全看完。雖說經典,但一頁一頁的翻完,還真要點耐性。不像老外寫書的風格,這本書看的很累(這也是一本參考手冊)。我認為在對大部分模式都有一定的了解后再來看這本書,會找到很多興趣點。
《
設計模式精解》我的設計模式之路是從這本書入門的,通過幾個實例來解釋模式的用法,以及為什么要用模式(這個可能更重要),不過全書也就講了10來個模式,意猶未盡。對設計模式感興趣、初學者推薦;
《
道法自然》是國人寫的很不錯的一本書,用他們自己寫的一個框架系統作為實例,貫穿全文,講解各種模式的用法。看過后,體會到模式在大項目,特別是這種框架系統中的應用真是太到位了。同時,熟悉MFC的朋友會在本書中收獲更多的東西,MFC也是一個框架系統,通過本書的講解,可以體會到MFC的內部設計以及為何如此設計(書中就專門講到MFC中的設計思想),同時,在講單件模式的時候,還帶出了MFC中theApp的作用(為什么要在MFC中安排一個theApp全局變量?這是我看到的唯一一本書解釋了這個問題的);
算法篇
《
編程珠璣》
講解數據結構和算法技巧的壓軸好書。
基礎篇就談這些,后續將討論C++的應用,Windows篇和Linux/Unix篇;
(原文地址:http://www.cnblogs.com/me115/archive/2012/12/26/2833346.html)