如何系统地学习 C++ 语言
由于我大一也陷入过迷茫,也走过一些弯路,那时候学不会直接记忆代码之类的事情我都干过,我也希望我的这些经验可以对你有所帮助。
首先是一本好的C++书籍(Accelerated C++, C++ Primer),然后以及尽量多的完成书籍的习题,可以帮助完成C++语法的学习。虽然前面的书籍涵盖了标准库,但是不够完善,这个时候你可以选择在线查阅C++标准库这种泛型的学习方式,也可以选择阅读《C++标准库》的方式进行学习。通过这样的步骤,你应该可以完成C++的初步学习了。
然后,由于C++是一门系统级语言,我想你需要到大三学习操作系统的时候,才会明白栈与堆、内存管理等更深层次的含义。但是,在明白这些概念之前不会妨碍你利用C++做一些事情,比如写一个简单的XML Parser。这个时候,你应该会发现很多问题,如效率,代码规范等,这个时候,你可以研究Effective C++,Google C++ Code Standard等,只有自己犯了错,回过头反省才会更加深刻。
随着时代的发展,C++语言也在不断迭代,每隔3年出一个新的版本,所以新出的 C++11/14/17/20/23新特性也需要学习。
随后,你可以更加深刻的去思考C++,你需要阅读《The Design and Evolution of C++》。这本书的阅读,会教会你很多,是对你影响最大的C++书籍。如果你对C++编译器的一些细节有兴趣,深入C++对象模型可以推荐。如果你对STL的一些实现有兴趣,可以去翻翻STL源代码。
此外,由于C++博大精深,为了理解C++,你必须认识其主要的次语言。幸运的是总共只有四个。
系统学习C++离不开学习资料
系统学习书籍
分类学习书籍
- 1.C++ Primer 第五版 Stanley B.Lippman
- 2.可不看的书:The C++ Programming Language(新手未必参透),Essential C++(lippman的入门小书,不够系统)
- 1.Effective C++ 第三版 Meyers
- 2.Effective STL Meyers
- 3.可不看的书(讲解都远不如Effective系列细致,并且和以上两本有相当可观的重复条目):C++ Coding Standards(中译名:C++编程规范 ),Exceptional C++(系列)
分类学习书籍
- 1. C++标准程序库:自修教程与参考 (db) Nicolai M. Josutti STL使用必看!
- (先学会怎么用,对照Effective STL)
- 2. STL源码剖析 (看看容器、迭代器、算法、函数对象乃至分配器的实现技巧)
- 3. 超越C++标准库:Boost库导论 (Boost有比较完善的doc。可不看的书:《Boost程序库完全开发指南》有点啰嗦)The Boost C++ Libraries 第二版(Sept. 2014)这本书也非常实用,附带讲解,适合入门!第二版基于 Boost 1.55.0 和 1.56.0 。第一版的中文翻译:Highscore - Boost C++ 库 Boost.Asio C++ Network Programming(一本很好的网络编程入门小书)
- 4. SGI STL Programmer's Guide (STL的话可以参考SGI的编程指南)