经常有一些小伙伴问我有没有C++学习路线的相关文章分享一下,对此我特意整理了一张C++学习路线图分享给大家!

图中我分了11个板块:
具体如下:
使用C++不可避免的需要用到C语言,所以C语言的基础知识我们也需要了解,主要有:
这里整理了一些C++必须要知道的基础知识,主要有:
我把下面的一些知识归为进阶知识点,可能你学完了也没进阶到哪里去,但是也是进阶必备知识点,主要有:
new/delete、new[]/delete[]为什么要配对使用
RAII特性
智能指针
内存泄漏的调试
STL vector
resize
reserve
capacity
clear
swap
at
♦️ array
♦️ map
♦️ unordered_map
♦️ list
♦️ tuple现在C++开发基本上都会使用C++11,而且C++新特性在面试时也是面试官常问的知识点,这里我总结了一些必须要知道的C++新特性:
操作系统非常重要,要学好C++就一定要打好操作系统的基础,但操作系统我们也没必要全都钻到细节里去,重点攻克下面几个知识点即可:
这里推荐下我在开发过程中经常会用到的几个工具:
使用一门语言一定要了解一下它常用的编码规范,有了编码规范代码写的才能稍微漂亮一点,目前多数C++开发团队都会参考Google编码规范来写代码。
学习C++一定要了解一些编译和链接的知识,如何连一些常见的编译链接错误都解决不了,那怎么能是个合格的C++程序员呢?
光学开车不行,你得上路;光学理论知识不行,得实践呀!
可能普通学生不知道做个什么项目?我有个想法,可不可以做这样一个小东西,输入是一段人物视频,输出也是一段视频,但是输出的视频中会对人物做一些特效处理,比如画一个人脸框,添加一些字幕,贴一个动画贴纸,贴个滤镜等。
在撸项目的过程中,应该会遇到很多问题:
你还会遇到一些问题:
如何制定这个项目的编码规范呢?使用什么编码风格,你可能需要Google编码规范。项目最好统一使用C++11新特性,可以找资料学习一下。
如何设计这个项目的架构呢?这是个技术活,也是个经验活,你可以参考参考别的项目?或者自底向下,走一步看一步,哪个模块的代码写完后看着不顺眼了重构一波,一般我看自己两个月前写的那些代码都会感到别扭,这时就可以考虑考虑学习一波设计模式!
项目的功能越来越多,逻辑越来越复杂,bug会越来越多,如何调试这些代码?
项目功能很多,这时你会接触到多线程,同步,死锁等概念,如何设计多线程,使用线程池吗?如何做好同步,解决数据竞争问题,是使用原子操作,还是使用互斥锁等。使用锁的过程中如何避免死锁,如果出现了死锁怎么定位呢?
功能增多,性能肯定越来越差,如何做好性能优化,如何更好的管理内存?使用什么工具来做性能分析呢?
相信撸完这个项目后,你的C++也可以算作入门了吧!
本来这里是推荐网站环节,貌似leetcode有些限制,我就不贴网站链接了。
再引用在一个论坛中看到的C++学习路线,看着蛮有道理推荐给大家:
`我提供一条线吧,针对C/C++以及针对LINUX后端服务器开发和分布式系统开发这条线:
0. 斯坦福的《编程范式》课程百度一下很多资源
1.《c++primer》1个月刷完第一遍做课后习题答案看《C++primer习题集》
2.《EffectiveC++》1个月刷完第一遍
3.(可选)《CSAPP》的Tinyweb浏览器实验(这个其实更多是C但是还是建议做一下原因后面说)(1个月)
4.跟MIT68242012年spring的分布式系统课程做完它的lab学习其代码课程主页:https://pdoscsailmitedu/archive/6824-2012/indexhtml(2个半月)
4a. (可选)抛弃lab中助教提供的框架代码自己实现一套完整的tinydistributedfilesystem(2个月)
打完收工!