-
1 # 小城同學
-
2 # 程式碼Go說科技
能感覺到你有想學的意願。但是不知道如何去學。兩年了,你還考慮這個問題,間接的反映了你的情況,你要麼沒有具體參與過專案,要麼沒人給你正確的指導。
作為有一個多年的C++開發經驗的大齡碼農,我給你提幾點建議。
一、掌握基本的語法。有條件的話,把書中的每一個例子都去親自敲出來,執行之後是否與書本上講解的是否一致。
二、掌握基本的資料結構用法。尤其是陣列,佇列,字串、指標等。
三、使用合適的工具。編譯器建議使用VS2010,他是微軟為支援C++11過渡版本。起步就學C++11,後期學起來有可能會更困難些。STL庫一定要學的,掌握vector、list、map的用法。
四、找合適的切入點。你找別人的學習框架,對你來說是不適合的。首先,他是以自己以為的水平編寫的。其次,你一下子要接受的知識點超出你的認知範圍。最後,不瞭解他的業務知識,出發點,你也不會理解透徹。上述三點會讓你困難重重。你要做的是,嘗試著找一個簡單的問題,用程式設計去解決。解決完一個之後再逐步迭代,由易到難,循序漸進。
五、大膽去實踐。說一千道一萬,沒有實踐不會出真知的。不要害怕,有問題問度娘、姑嫂。
最後,記住透過解決問題的方式是最好的學習方法。
-
3 # MYCODING
要學習C++,建議先學習C,C語言是基礎。
一、學習C語言,主要是掌握
1、資料型別、變數、記憶體佈局、指標基礎;
2、字串、一維陣列、二維陣列;
3、一級指標,二級指標,三級指標,N級指標概念,指標陣列和陣列指標;
4、結構體、檔案的使用;
5、動態庫的封裝和設計;
6、函式指標回撥函式。
二、C++學習
1、面向物件程式設計思想;
2、類的封裝,構造和析構、靜態成員、物件管理;
3、類的構造(有參建構函式、無參構造、複製構造、預設建構函式)和析構;
4、物件動態管理、友元函式、友元類、運算子過載;
5、C++編譯器物件管理模型分析;
6、類物件的動態管理(new/delete);
7、友元函式和友元類;
8、運算子過載(一元運算子、二元運算子、運算子過載難點、專案開發中的運算子過載);
9、類的繼承、多繼承及其二義性、虛繼承;
10、多型(概念、意義、原理剖析、多型案例);
11、虛擬函式、純虛擬函式、抽象類(面向抽象類程式設計思想案例);
12、函式模板、類模板,模板的繼承;
13、C++型別轉換;
14、C++輸入輸出流(標準I/O 檔案I/O 字元流I/O);
15、C++異常處理(異常機制、異常型別、異常變數、異常層次結構、標準異常庫);
三、學習方法
1、適當做一些小專案,比如用C/C++操作mysql, redis, sphinx, mongodb等等。
2、閱讀一些原始碼,執行在linux上的大多軟體是C/C++寫的,可以下載原始碼學些。
3、推薦兩本書,《C Primer Plus》、《C++ Primer Plus》,講的不錯。
回覆列表
主要問題還是程式碼量不夠,我能找到的開源C++專案幾乎都看不懂。程式碼量不夠不是重點,你需要的不是學習語言,也不是學習開源專案,而是基本功。基本功太爛,原始碼當然幾乎都看不懂。比如CSAPP,algorithms 4th,tcpip詳解之類的。不然你去看nginx原始碼之類的,一定會滿頭包。基本功的書都很枯燥,而且花時間,但你遲早要看的。基本功要修煉到 知其所以然。比如,談到紅黑樹,STL,nginx,innodb,linux核心都用到了,你知道分別用來幹嘛嗎?或者反過來,你知道nginx用了哪些資料結構,分別用來幹嘛?學習很多時候都是“無趣”的,不經歷無趣的學習你永遠也做不了有趣的工作。最後,我覺得c++最有趣的是寫一個正則引擎,或者儲存引擎。學習一門語言,最好寫一些不用它不行的東西,比如上面那倆。貪吃蛇什麼語言不能寫,垃圾程式碼寫再多也沒用,