如何自學《C++ Primer》和《Thinking in C++》?

大一計科菜鳥一枚,暑期準備看這兩本書,不知道應該怎麼看,哪些是重點,求教大神指導。(ps:大一隻上了譚浩強的c++程序設計)


C++ Primer足矣,@陳良喬 提到的《C++程序設計語言》不適合初學者。


《C++變成死相》不要讀...


《C++編程思想》中文版翻譯的奇爛無比!感覺讀起來相當不順。當初本科上課的時候還用的是這本教材,我倒!

《C++ Primer》還不錯。不過建議初學者先找一本薄點的書入門下,比如《Essential C++》,直接上這本後書有點吃不消,打消積極性!


這兩本書都是適合精讀的書,所以對於一般人來說就不要指望看一遍就能OK的

程序是寫出來的,

邊寫邊讀會效果更好一些。


我根據我的經歷做答

這兩本書,我只是慕名看過第一本,但是看到一半就看不下去了,對當時的我來說,太難了

第二本只是聽說過,沒有看過

毫無疑問,這兩本書都是好書,讀其中任何一本都可以,至於到底讀哪本,跑到書店,把兩本都翻開看看,哪本讓你更感興趣就看哪本

其實我擔心這兩本書的難度和厚度,對你來說可能都是一個比較高的門檻,我害怕像我一樣出現書看到一半而半途而廢的情況

所以,我的建議,你可以先找一本比較通俗易懂的入門書(比如我寫的這本,我的第一本C++書)先看看,相當於先找個墊腳石,然後再用這兩本書中的一本來提高,這樣學習的曲線要緩和得多。

btw,你為啥沒把《C++程序設計語言》放在考慮之列?你讓C++一哥情何以堪?


學慣用c++ primer plus,簡單。

工具書是c++ primer,比c++規範文檔簡單,但是講的又極其詳細。

床頭書是thinking in c++,催眠。


《C++ primer》絕對是不適合作為入門書的。前面提這建議的兄弟不是人云亦云就是C++水平已經很不錯了。

這本書的知識點鋪非常詳細,但是切入的角度給人感覺很奇怪,比如說還沒有講面向對象那部分的內容,就已經開始講構造函數和析構函數。容器分了兩塊講,感覺很突兀。更要命的是有的知識點居然沒有示例。反正我當年第一次看這本書,很費勁的。

c++給我感覺,是一門出身高貴,但公主病嚴重的語言,動不動給你來個意想不到的段錯誤,越界錯誤,還有和編譯器有關的詭異錯誤,學起來非常讓人厭煩。它一方面承襲了c語言語法中難以控制的指針,數組,內存操作。另一方面,它的面向對象部分相比java,過於詭異和複雜,儘管看上去,好像兩者面向對象的部分差別好像不那麼大。

我大學裡發的那本教材我覺得非常不錯,清華大學出版社出的《c++語言程序設計》,雖然是本國產書,還是本教材,但我覺得講的簡單清楚,示例也很詳實,關鍵是有一些最常用的UML知識的介紹。學完這本書,你可以說是c++語言入門了,此時再去看《c++ primer》,閱讀的快感絕對是有了。

還有,強烈不建議拿java入門,c語言是入門唯一的選項,不是因為別的,C/C++和java寫程序時的思維方式完全不同。C/C++考驗計算機專業幾乎每門專業課的基本功。而java在實踐中輕語法,重業務邏輯,因為就算你core java語法沒那麼紮實,你依然能不明覺厲的寫出功能很完整的東西。而此時c++er們還在為某處隱藏的很深的數組越界哭爹喊娘。你習慣了java,再學c++的時候,要面對很多適合java但不適合c++的思維慣性,要重新學習內存分配的很多知識,操作系統的很多知識,要面對不會中間提示你語法錯誤的IDE,要適應沒有那麼多庫,所以很多複雜功能不能拿來主義,要一行一行寫的囧境。

但是別誤會,java語言你一定要學,因為玩兒起java來可以用一首歌的歌詞形容:就是這個feel 倍兒爽。你只需要考慮這個代碼怎麼寫,代碼自然而然就有了。不像c++,常常找bug找到海枯石爛,最後發現有找bug的時間,搞java的已經馬爾地夫度假回來了。


C++是一門要實踐和多思考的語言,和其他語言不太一樣.比較抽象,細節也比較多,這裡我認為可以看看《21天學會C++》,因為他能歸納的如此簡單,說明他還是值得初學者一讀。都完後可以看《C++ primer》,把課後習題都做了。估計C++基礎應該沒問題了,有時間可以翻翻《深入理解C++對象模型》和《Effective C++》這靚本書,都寫的不錯,堪稱經典,看完了,開始嘗試在項目中實踐了,一遍實踐一遍回歸以前翻過的書,C++書平會更上一層樓


Stackoverflow的這個頁面http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list按照:

#================================================================

1. Reference

2. Beginner

2.1 Introductory

2.2 Practice

3. Advanced

的分類對與C++有關的一些書籍做了分類和評價,給出評價的人是自己讀過以及動手編過代碼的。


目前在讀C++Primer第五版,

入門學語法讀這本書會費力,

個人認為,因為系統性的講解語法不是這本書的唯一重點,

語法都有,但是編排上面並沒有突出給讀者。

因此不適合入門,

是適合深入了解C++的一本進階書籍,以及某個語法的詳解速查(不確定)。

個人看法以上。

謝謝。


入門的話,推薦《C++ primer plus》,相對《C++ primer》更簡單些,學泛型編程的時候可以學《C++ primer》。


《C++ Primer》這本書講得很詳細,可能學得比較累吧。個人建議的學習方法是,一行一行的把書上的代碼手敲一遍,邊敲,邊看效果,然後思考為什麼這樣做,這樣做的效果是什麼,遇到不懂的,再仔細的在書中尋找答案,書中都有很詳細的解釋。剛開始敲代碼會遇到比較多語法錯誤,積累多了就能夠很快改正過來。

在豆瓣書評和一些技術博客也看到了很多讀者也都提到了,這本厚如磚頭的書籍,自己一個人自學起來也比較吃力,還有很多都半途而廢買了書籍,最終卻沒能完成該書的學習任務。對於那些不能堅持學完本書的同學,我這裡個人推薦他們可以嘗試一下深入學習 《C++ Primer 第五版》,以任務驅動模式由一個老師帶領大家在規定時間內完成C++領域最經典教材《C++ Primer 第5版》的學習。


潑一點冷水。。。。在大學期間要爭取在畢業的時候C++ primer看起來了翻小學課文一樣容易,然後是generic programming STL要看的比較透徹。。。。這樣才能保證畢業時能找份c++的高薪工作。。。。。在工作中接下來可以了解一下c++不同編譯器的處理風格,vptr實現,object回調優化gcc和vc有啥差別,隱對象不同編譯器是如何在彙編角度實現的,類指針不同編譯器實現是不一樣的。。。等等。。。。c++的坑很深。。。

所以,有事沒事幹嘛不去搞java?! c++奇萌的錯誤一個不小心,把你搞的半死都有可能。。。而java工作大把的多,根本幾乎不用擔心出問題。


@龍韻 說的「別用C++寫C style的代碼」實在太正確了。先找本國內的垃圾書看看,對C++有個大體了解,然後看《C++ primer》,一定要看第四版或者更新的第五版(沒看過,不好評價)。 用lippman的說法,一定要學會現代C++程序的風格。C++越來越像託管語言的風格了。學習java性價比更高。


先讀c++primer做入門,c++primer比較基礎,通俗易懂。再讀c++程序設計語言,這本書更細節化,更偏重於c++編譯器本身對c++語言的處理,需要對c++比較熟悉後再讀效果會比較好。


新手看c++ primer中,半個月啃了一百多頁,因為看得很慢很慢,裡面說得很詳細,但感覺需要很有耐心很有耐心才能啃完六百多頁。。


推薦只看c++ primer,至於什麼水平看,怎麼看,我拿自己做例子。我是大一開始看的,確切點說大一上學期邊看譚浩強的那本紅皮的c++程序設計(是教材),邊看c++ primer,一個學期下來,後一本只看了200來頁(中文版第四版),前一本全看完了。大一下學期,又看c++primer,從頭看,看到快400頁的時候看不下去了,就不再看了,後來大二又看了兩次,都是到了500頁左右,這時候已經覺得不算難了,不過再往後就沒再看了因為後面的內容太高級,我覺得我以後用不到,,,

另外那本編程思想,我覺得不好,我看過,中文版分上下兩冊,我只看了上冊。我覺得對這本書給予很大的讚譽的人,應該大多數是搞c語言的,後來轉向的c++才會這樣。如果是一個只用c++的人,應該不會喜歡這本書。畢竟c與c++是兩種語言!


推薦讀C++Primer第五版,裡面增加了許多C11的新特性。不過學C++周期太長,建議還是搞移動開發好玩點。


看《設計模式》這本書吧


我是不建議你學習C++的。對於入門來講,C++不是一門合適的語言。如果你想要提高你的code能力,你可以學學java和開發一些android程序試試。永遠不要抱著學習的態度來啃語言書籍。就我來講,自己非計算機專業,看了一個月不到的《C++ Primer》無以為繼之後學習Java,後來找到一份C++工作。當時C++指針都忘了,但是實現了效果,就入職了。之後的C++是看著別人的代碼,自己跟著團隊寫程序寫出來的。《C++ Primer》也沒有回頭看過。不過其他的C++書籍倒是看了一些。

ps:C++基礎語法熟悉就可以了,還有就是如何使用類,如何使用類的指針。回頭看一遍譚浩強的書籍即可。之後買一本《C++標準庫》過來看,想進階看 《effective-stl》,和《effective-c++》。想寫程序再買本qt開發書籍。書一定是要用買的,最後真心不建議自學c++。


推薦閱讀:

為什麼Delphi的編譯速度如此之快?
對於以中序表達式為主的編程語言,不實現運算符優先順序,統一求值順序(例如從左往右)會是個好主意嗎?
如何編寫高效的 R 語言程序?

TAG:編程語言 | 自學 | C | CPrimerPlus書籍 | CPrimer書籍 |