入门
1. 推荐书籍
《Accelerated C++》,《Essential C++》二选一精读。《A Tour of C++》选读。
-
《Accelerated C++》很适合新手,因为只有短短不到 300 页,在普遍一样的入门书籍里面是一股清流。容易通读完,减少挫败感。就这样的篇幅,还能涉及一些标准库的使用,真的很适合入门。
-
《Essential C++》比较适合有其他编程经验的中手迅速学习C++。内容会比《Accelerated C++》深一些。
-
《A Tour of C++》,C++ creator 扛鼎之作,适合刚学完、还有学完很长时间以后看,快速复习 C++ 知识。
2. 推荐网站
- C++ 教程:https://www.runoob.com/cplusplus/cpp-tutorial.html
- 你好,C++:https://zhuanlan.zhihu.com/nihaoCPP
- C++入门系列博客:https://www.jianshu.com/u/67702c00ea59
3. 代码
主要是上 GitHub 看点别人的代码,尝试写点代码。
- 计算器1:C++实现“简单计算器”
- 计算器2如何用 C++ 写一个简单的计算器程序?
- 学生管理系统:C++项目(1):学生信息管理系统(简单教学版)
入门这一步是最关键的,你初步了解了各种基本概念,并成功书写和运行起了代码,感觉真棒~
进阶
1. 推荐书籍
-
《C++ Programming Language》和《C++ Primer Plus》二选一精读。之后有时间可以翻翻另一本。
-
了解函数库:可以按顺序看看《C++ 标准库》、《深入理解 C++ 对象模型》和侯捷老师的《STL 源码剖析》。
-
如何写出更好性能、更优雅的C++代码感兴趣? 可以继续看《Effective C++》和《More Effective C++》,《Exceptional C++》。这几本书,能让你了解优秀工程实践,认真看完能说有自信较有质量地参与工程项目了。
-
最后,多了解计算机结构、存储、运算原理方面的知识,会对C++ 的来龙去脉理解得更透彻,可以读读《计算机科学导论》、软件工程的《代码大全》、操作系统的《现代操作系统》、程序员入门的《深入理解计算机系统》。
答疑
问题1:要不要先学C,再学C++?
个人看法是,单就学习C++而言,直接学习C++就可以了,不用先学C。在知乎看到轮子哥在微软维护STL的Stephen Thomas Lavavej都说他当年学C++之前学C语言浪费了大量的时间,早知道就直接从C++开始。
问题 2:Android 和 C/C++ 怎么结合起来?
可以搜索 NDK、JNI 等关键字了解,网上铺天盖地的基本教程。这个学会基本使用应该大家都没啥问题,但是如果是更深入一点,比如具有明确功能的代码中,c 代码是什么结构的,生命周期,怎么跟 Android(Java)配合等等,说实话,需要一个项目的实践。
问题3:就对于 Android 开发者而言学习 C/C++ 有没有必要呢,怎么结合起来呢?
个人觉得必要性要看所在公司的业务领域和你的个人兴趣。比如直播公司涉及的音视频业务,必然是要涉及 c/c++ 的(ffmpeg 啥的哪有java代码);类似的需要 c/c++ 的业务一般是些重性能、偏底层的东西。如果你判断自己公司中短期都没这个需要,那就轮到看自己有没有兴趣了。前景的话说句题外话,大前端慢慢侵蚀原生开发,慢慢单纯的 Android 开发会被替代的,虽然过程应该很缓慢。一方面你也可以转大前端,这样比较快速;另一方面就是可以深入做这些偏底层的东西,没那么容易替代,但未来的事情谁又说得清楚呢,哈哈。