標籤:

學習C++,應該循序漸進的看哪些書?


大一學C++時的教材是Deitel的C++ How to Program第四版,後來看了C++ primer和Effective C++,C++ 標準程序庫和C++ 編程思想都買了但還沒開始看。

下面是轉載的在博客上看到的一個C++書籍閱讀清單,可以參考下:

階段 1

《Essential C++》

這是一本內容不多但很實用的C++入門書籍,強調快速上手與理解C++編程。本書主要圍繞一系列逐漸複雜的程序問題,以及用以解決這些問題的語言特性展開講解。你不只學到C++的函數和結構,也會學習到它們的設計目的和基本原理。

《C++ Primer》

本書對C++基本概念、技術、以及現代C++編程風格進行了全面而且權威的闡述,是C++初學者的最佳指南;本書可以幫助你編寫實用的程序,而無需首先精通每個語言細節。對於中高級程序員,本書也是不可或缺的參考書。

階段 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++實用的編程技術和最佳的實踐方法。


C++ Primer 5th

The C++ Standard Library 2nd

Effective C++

Effective Modern C++是一本非常不錯的書!強烈推薦。

《深度探索C++對象模型》需要多看幾遍!

《C++語言的設計與演化》我還沒看,據說是本好書

然後看看模板——C++ Templates 純入門,有了這本書基礎 就可以看看Modern C++ Design

然後看看 C++標準,實時關注 C++標準動態(例如 C++ 17 的模塊啊,反射啊),多 Google。

至於《STL源碼剖析》什麼的,我感覺直接去看STL源碼就行,而且那本書也沒有為 C++ 11 更新,還是算了吧。。。

C++ 之父的那本 TC++PL 4th 也很不錯,可以用作入門。

至於實踐,哪有人看書不實踐的,看到神奇的模板元肯定情不自禁地就開寫了。。。


很贊同以上@史嘉煒 的答案,幾乎囊括了C++領域的所有經典,對每一本書的分析也非常到位,可以參考。

我想補充一點的是,C++領域的書太多了,等把這些書一一看完,人都老了

所以,毫無疑問,這些書都是經典,但是應該有所選擇,針對自己的應用場景,針對自己的弱點,有針對性地選擇閱讀。全部看完,除了變成一個書獃子之外,別無其它好處。

(很奇怪,Bjane的《TCPL》居然沒有上榜,還有誰比他更了解C++呢?)

另外,我還想提醒的是,這些書大都是局限在C++語法層面的。就像我們即使是把一本英語語法書全部背下來,也沒法說一口流利的英語一樣,C++也是同樣的道理。C++的語法固然重要,但是,良好的編寫思維習慣應該更加重要。以下,我推薦幾本我自己看過的,局限在代碼層面,關於架構設計等等更高層次的,那就離C++比較遠了,沒有涉及。這裡我只是列出了書的名字,具體介紹,網上一大堆,這裡就不再羅嗦了。

《設計模式》

《重構》

《代碼大全》

《C++編碼規範》

其他應該還有很多,但是沒有看過,就不推薦了。

這幾本,我是真心覺得好,真心推薦。


http://www.perfect-is-shit.com/2012/12/11/how-to-learn-cpp/


應該看書-作項目-看書,一本書一個項目,不然你把推薦的書全讀了,水平也很有限。


推薦三本書《C++ Primer》、《STL源碼剖析》、《深入探索C++對象模型》。看懂這三本書,其他書C++書籍大可不必再看!


百度貼吧里,c語言吧和c++吧的置頂帖:

c

http://tieba.baidu.com/p/3513533957

http://tieba.baidu.com/p/3126139497

github上的書單等學習資源:

電腦版吧規索引: http://tieba.github.io/cpl/index.html

爪機版吧規索引: http://tieba.github.io/cpl/mobile.html

c++

http://tieba.baidu.com/p/2194555700

github上的書單等學習資源:

http://tieba.github.com/cpp/

感嘆一下,非技術性吧大部分挺撕逼的,技術性吧還是挺好的。

那個吧主挺用心的啊,我玩了這麼久知乎,後來迷上囤書單和囤書,現在再來看看,竟然我買的書中絕大部分都上榜了。所以我很佩服這個吧主。

兩年前我就囤了他的這個書單,但沒仔細看,現在看看還真是心情很複雜。

因為我買書一般就是去知乎和豆瓣搜,看評價評分什麼的;知乎收藏了很多推書的高票經典回答,豆瓣也收藏了很多高票書單,微信收藏了很多推書的文章,瀏覽器書籤也有很多……

要是一開始我就踏踏實實、非常信任地按這個吧主的書單上看書買書就好了,浪費了很多時間,都是淚……

給這個吧主身份證號個贊!

講真,英語學的好,可以去谷歌搜英文關鍵詞,再去美亞看評分評論什麼的。

剛才發現裡面提問的智慧這個頁面挺不錯的,還有怎樣成為一個hacker的鏈接。

http://www.catb.org/~esr/faqs/hacker-howto.html


初學者最怕光說不練型,就是只看書,不實際了解現實中的C++項目中是怎麼應用這些語法和設計思想。

所以我的建議是別光看書,還要多讀代碼,尤其是好的代碼。

C++的好代碼有很多,例如你可以看看wxWidgets和SGI版本的STL源碼,了解該怎麼用c++來組織代碼層次,以及c++的模板用法


推薦看看這個書單C++必讀書單,從入門到中級,再到高級,一步一步打怪升級,堅持下來一定會成為C++大神。


這裡有大部分學習C/C++的資料,我自己也在用的,都還不錯,有書的話就更好了,還差一些書太大了沒上傳,可以自己在網上下載。http://download.csdn.net/album/detail/3672


你也可以去TOPU聽一下清華大學《C++語言程序設計》課程,和其他人一起討論,比自己學會好很多。


c++ faq - The Definitive C++ Book Guide and List


effective C++/stl多看幾遍 開始擼項目。


我入門用的是C++ primer,忘了第幾版了。感覺很好。


推薦閱讀:

和團隊做物理引擎,做到商業程度還需要什麼?
編程時IDE里的Intellisence好像是個編譯器前端一樣,什麼都知道.這是怎麼實現的?
程序員怎樣避免高強度的工作?
【C語言】關於C裡面數組批量初始化?
c++程序哪些應該放在頭文件裡面,哪些應該放在源文件裡面?

TAG:學習 | 書籍 | CC |