如果從學生時代算起的話,我學習和使用C++已經差不多快十年了,仍然不敢說自己已經掌握了C++的全部特性,但或許能夠給出一些有用的建議吧。
我學習C++全靠自學,花費了不少的功夫,在這里分享一些學習心得,希望對大家有所幫助。
C++基礎
閱讀一些入門級書籍,比如《C++大學教程》、《C++程序設計原理與實踐》、經典書籍《C++ Primer》、《C++程序設計語言》、《C++標準程序庫》等;
常見的C++基礎都在這些書中,比如面向對象的三大特性、常規語法、內存泄漏、多種智能指針、STL容器空間配置器、volatile關鍵字用法、list與vector比較等等,這里就不在一一列舉了。
正確并高效率的使用C++
到了這個階段你需要深入修煉,也是進入C++專業開發路線的必經之路,可以找一些如《C++編程規范》、《Effective C++》、《A Tour of C++》、《Effective STL》、《Exceptional C++》等書籍修煉;
這個階段你要掌握智能指針、移動語義、RALL使用場景有哪些、并發編程(如線程池、內存序列、thread、mutex等)等;
深入了解C++
這個層次可以閱讀《STL源碼剖析》、《Imperfect C++》、《C++設計新思維》、《深入探索C++對象模型》、《C++模版元編程》等書籍;
研究C++
閱讀C++學術文獻,標準委員會的報告和提案,C++標準文件,閱讀書籍如《編程規范》、《C++語言的設計和演化》等。
如果想把上述步驟全部學好,一年時間是遠遠不夠的;畢竟閱讀這些書籍就要投入不少時間,再加上大部分人需要反復閱讀才可能會記住其中的一些細節。
想要學好,只閱讀還遠不夠,必須還要進行練習,除了書中的習題,多參與一些工程或開源項目,這樣才能對C++語法、編程范式、使用方法等更加了解。
最最重要的是要將C++這門語言應用到具體的應用場景中。
這里給大家推薦一些適合初學者學習的優秀開源項目:
Spdlog
比較熱門的C++日志開源庫,源碼結構一目了然,很適合初學者學習。
Taskflow
并發任務調度開源庫,想學習并發的可以研究一下這個庫,會讓你對調度有更進一步的了解。
Chromium
Chrome的源代碼,代碼質量真的非常高,源代碼中包含了先進的C++理念設計,非常值得學習。
Abseil
由Google開源C++輪子庫,在這個庫中可以學到任何C++基礎知識,想了解的可以去官方網站;
學習C++一定不要想著速成,要多花時間和精力去啃經典書籍和源代碼,多動手寫代碼;畢竟C++博大精深,特性種類繁多,支持多種范式編程,不是那么容易就能隨便掌握。