保姆级 C++ 学习路线

news2025/4/6 0:52:34

上周有小伙伴留言求安排一手C/C++学习路线,这周一份保姆级的C++语言安排上!

图片

以前就写过C语言的学习路线:可能是北半球最好的零基础C语言学习路线,这次把C++的学习路线也安排上,专门花了一个多月写了这篇学习路线,全文超过8000字,文章润色了好久,配套的资料全部找齐了。

1、先唠两句

本篇学习路线主要有五个阶段组成,每个阶段我都推荐的有对应的书籍和视频,对于其中的内容也进行了标注,分为必看选看两种。

有些内容是必看的,这个一定要看,不可以省略跳过;有些内容是选看的,有时间就看吧,没有时间可以后期记得再补上!并不代表我没写上去的就是不需要看的,这是不对的哈!

2、学习路线

说回正题,这篇学习路线我真的写了一个月左右。

不要怀疑,是真的一个月,主要是因为最近部门老大又接了一些新项目,我们也在加班加点干活。

所以我就只能利用各种碎片化时间写出来的这篇学习路线,这篇文章主要是面向一些小白和非科班选手,如果你是转行,可以按照现在的这篇学习路线来学。

这篇C++学习路线主要是面向求职,认真走完前三阶段绝对能帮助你找到一个不错的工作了。

走完全部五个阶段,你可以说自己是一名合格的C++研发工程师了。

对于本文中推荐的书籍,当当、JD上均有售相应的纸质版,对应的免费电子版PDF可以在下面这两个仓库找到,如果你无法访问github,可以访问一下码云:

github地址:https://github.com/GrindGold/pdf

码云地址:https://gitee.com/grindgold/pdf

除此之外,本文也会推荐一些视频,我已经放在公众号后台了,获取方式或者视频地址都在对应的推荐视频下面了,大家可以留心一下即可。

下面是本文主要大纲:

图片

C++学习路线(求职版)

第一阶段、入门

我一直建议一些小白选手在入门最开始不要直接去啃书,特别是不要在最开始的时候就去啃一些黑皮书!

这些书籍好吗?

,但暂时不适合现在还是个小白的你。

如果你在小白阶段就直接去啃这些内容,妥妥的劝退。

1、郝斌老师的C语言教程(选看)

图片

2433224

地址:https://www.bilibili.com/video/BV1os411h77o

如果你有别的语言基础,比如Java、Python等,那么郝斌老师的C语言教程就直接跳过吧。

如果你没有别的语言基础,还是看一下郝斌老师的教程吧。

如果你没有最基本的C语言基础,可能连指针是什么内容都不清楚。

那么你在学习C++的时候,比如智能指针那一块会很萌,觉得有些内容看起来云里雾里,前言不搭后语,摸不着头脑。

2、黑马培训班的C++教程(必看)

图片

地址:https://www.bilibili.com/video/BV1Tb411j7uM

这个必看!我看的是2017版的黑马C++,现在还有小伙伴在我2019年下的留言回复我。。

图片

最好也跟着视频中一起敲,可能你最开始敲的时候速度很慢,对其中的某些内容也不甚其解,没关系,跟着敲就是了。

就好像我以前在看这门视频的时候一样,一个字一个字的敲。

图片

黑马C++笔记

关于看一些编程类视频的方法,我以前也分享过自己是如何看视频的,感兴趣的可以看看。

文章地址:看视频的一点小建议

第二阶段、上升

这是整个C++学习路线中最重要的一个阶段,依然是从书籍和视频两个方面入手。

如果说第一阶段是带你入门,那么第二阶段就是帮你打好基础,让你在后期的学习中如履平地、不至于根基不稳。

1、《C++ Primer 第五版》或者《C++ Primer Plus 第六版》

这是两本完全不一样的书。

前者,也就是《C++ Primer 第五版》适合一些有基础的选手,封面如下;

图片

选择这本书的人最好是有一些C语言基础的,也就是可以跳过第一阶段的郝斌老师的C语言教程,只看黑马教程的那些人。

当然了你如果有其余语言的基础就更好了。

在看这本书的时候记得不要跳过课后练习题,没必要每道题都要仔仔细细的做,但是每小节后的前2-3题绝对需要自己做一下。

不要觉得自己学得挺不错的,就直接跳过课后题了,我以前看这本书的时候也觉得自己都看懂了。

转头去做一下课后题,才知道我看懂个锤子。。。

这本书的前8章是基础部分,需要好好看;第9 - 12章为容器、算法这些知识;第13章-19章为进阶一点的拷贝、重载等等知识点。

对于13-19章之间的内容,你可能第一次理解不了,没关系,后期遇到问题再来接着翻对应的知识点就行。

因为我就是这么过来的,比如拷贝构造函数和智能指针部分,我记得我至少来来回回看了三四遍才理解清楚。。。

我知道还要一本《C++ Primer 5th》对应的练习题集,封面如下:

图片

习题集

很多人都问我这本书有没有必要去买?私以为《C++ Primer 5th》课后的题就足够了。

量不在多,在乎于精,如果有不懂的及时弄懂就行,这本习题集没必要买。

有时候选择太多反而是一种坏事,可选项太多反而会导致不好下手,不知道该选哪个了。

后者,也就是《C++ Primer Plus 第六版》适合小白选手,也就是没有任何语言基础的选手,封面如下:

图片

这里应该是C++PrimerPlus

这本书是完全的小白向书籍,甚至可以说讲的太详细了。

选择这本书的人建议你必须看完第一阶段的《郝斌老师的C语言教程》和《黑马培训班视频》,然后再去买这本书,千万不要去买《C++ Primer 第五版》那本书了。

记得要根据自身的情况来选择不同的书籍。

2、粗看三个侯捷老师的视频

看书是一件比较乏味的事,特别是那些大黑书,看起来比较枯燥,因此课题穿插一些视频。

在第二阶段,我建议先粗看一下第三阶段三个必看视频,也就是侯捷老师的STL泛型编程、C++11新特性、内存管理与分析这三门课程。

侯捷老师的全部课程,公众号后台回复”侯捷“即可获取。

我知道看到这里,可能有同学怀疑我在乱说,甚至直接喷我教坏学弟学妹们,刚开始学习就直接看这么高深的东西。。。

为什么要提前看第三阶段的几个视频?

第一、我是推荐你在第二阶段视频,但不代表你可以在第二阶段直接上来就看书,看这几个视频的前提是至少学完、看完C++的基础知识后,比如《C++ Primer 第五版》的前八章,至少要看完前八章再来粗看视频。

第二、正如上面说的,看书是一件很容易让人感到乏味的事情,换一种接受知识的形式再回头看书的话,效率一般都会大为改善。猪肉大葱的饺子吃习惯了还想吃吃韭菜鸡蛋的呢。。

第三、侯捷老师的这几个视频是每个学习C++的人都应该仔细看几遍下来的,只看一遍是绝对记不住的。

所以可以在第二阶段先大致看看这几个必看的视频,在第三阶段再来仔细看看这几个视频。

我以前跟大家分享过自己在看视频时候的一些方法,就是下面这篇文章:

但侯捷老师的这几个视频不适用这些方法,侯捷老师的这几门课程,你只需要认真看下去即可,如果你有跟着敲的决心也可以,不打算跟着敲也没事,认真看就行。

你在看这三个视频的时候可能会觉得懵,觉得云里雾里摸不着头脑,不要慌,这是正常的。

觉得不懵,反而不正常。。。

视频中的某些知识点看不懂、听不明白,没关系,接着看下去就行。

不需要理解的很透彻,只需要对其中出现的名词有个大概印象即可。

第三阶段、精进

1、必看的2本书和选看的2本书

具体来说必看的两本书,或者说,必看的两本书和一章节是STL源码剖析、Effective C++、深度探索C++对象模型第三章

而选看的两本书:More Effective C++、深度探索C++第三章以外的部分

为什么要看这两本书和一章?

往近了说,面试会问,这是一个很真实的答案,没办法,人家面试官问啊。

是的,面试会问,稍微正规点的C++面试绝对会问STL库的,而且还可能会根据你的回答来看要不要继续深挖下去。

比如Vector扩容机制、unordered_map和map底层数据结构是什么、哈希冲突如何解决?

往远了说

《STL源码剖析》这本书带你走进C++下最知名的库的底层,一探其中奥秘,通过这本书和侯捷老师的STL源码视频,你会对STL有一个完全不一样的认识。

那些容器、库函数,会在你写代码和刷题的时候提供事半功倍的效果,值得看

《Effective C++》正是写给那些自以为“精通”了C++的人看的,相信我,C++绝对是一门高深莫测的语言,这本书只是带你管孔窥豹一点它的奥秘,值得看

《深度探索C++对象》,这是本好书,但内容太冗杂了,最重要的就就是其中第三章虚函数部分。

以前我就分享过,区分C++应聘者的水平高低最好的一个方法就是问他虚函数和STL部分知识点。

这两个部分的知识点,应聘者能答得不错的话,可以说明这个应聘者是学过一些C++的,C++语言的基本功没什么大问题的。

所以第三章虚函数部分,值得看

选看的两本书不是好书吗?不值得看吗?

不是,它们一样是很好的C++书籍,但是优先级可以往后放一放,找到工作再说。

先把最主要的必看的两本书籍看完再说,选看的两本书可以后期再看。

2、必看的三个视频和一个选看的视频

侯捷老师是台湾的C++大师,学习C++的应该没有不知道侯捷老师的。

以前还很有幸看过侯捷老师视频直播哈哈。

扯远了,必看的视频分别是侯捷老师的STL泛型编程、C++11新特性、内存管理与分析

选看的视频则是侯捷老师的程序的生前死后。

侯捷老师的全部课程,后台回复”侯捷“即可获取。

必看的三个视频重要性依次递减,最重要的就是STL泛型编程,最次的就是内容管理与分析。

其中STL泛型编程是帮助你理解《STL源码剖析》这本书;C++11新特性则是帮助你理解《C++ Primer 第五版》中的C++11新特性。

毕竟光看书,纯靠自己理解一些知识点很容易走错路或者钻牛角尖,有人带着会好很多。

第四阶段、实战

其实认真学完前三阶段已经差不多了,再去找个项目好好做做,思考钻研一下。

基本C++语言这块,你是没啥问题了,再了解一些数据结构与算法、操作系统、计算机网络、数据库的知识就可以出去可以出去找工作了。

如果你有志在C++这条路上走下去,那你可以接着往下看下去了。

一个好的C++开发工程师对网络编程一定是十分熟悉和了解的,毕竟学习C++不像学习Java那样,能在学习过程中通过搭建自己的网站或者做一些小Demo来获取自我满足感。

正常来说,你在学习C++的过程中,很长一段时间段内陪伴你的都是一个黑乎乎的命令框,网络编程阶段是为数不多你能够获得一些满足感的阶段。

推荐你在该阶段通过自主开发一个服务器来加深自己对网络编程的理解的认识。

我想很多人都会内心OS:”什么?烂大街的服务器项目?秀哥你没搞错吧,怎么推荐我去学这个?“

其实烂大街的东西,并不代表它不值得去做。

还有就是很多人在简历上写了Web服务器项目,但是实际上都是直接copy的github上的开源项目,可能看都没看懂就说是自己做的项目。

这样的人多了去了。。。

1、两本必看的书、一本选看的书

学习C/C++ Linux相关的网络编程,必看的两本书分别是《TCP/IP 网络编程》和《Linux高性能服务端编程》。

前者是本很好的书,原因就是手把手教你写代码,这是真的手把手教你写代码。。唯一不好的点就是书中的很多知识讲的太浅了,很多功能和原理都只是一笔带过,远远不如《Linux高性能服务端编程》讲的深。

我记的这本书好像一共24章左右,每章都是一个例子,也许大家可能被一些广告语上的”手把手教你XXX“坑怕了。

不要担心,这本书真的是手把手教你写各种网络通信的例子。。。

我以前在看这本书的时候专门去 github 上找了别人做好的笔记,一边看别人的笔记一边看书,最后又在别人的笔记基础上删删改改形成了自己的笔记,把书中的例子也敲了个遍。

图片

TCPIP网络编程笔记

看完《TCPIP网络编程》后,你应该去看有一下游双老师的《Linux高性能服务端编程》。

这本书讲的相当不错,是每一个从事服务端开发的人必备的一本书,《TCPIP网络编程》那本书告诉了你How,这本书则告诉你Why。

还有一本选看的书,是北师大陈硕老师的《Mudo:Linux 多线程服务端编程》。

这本书好,但是有点高深了,而且工业界用Mudo的也不是很多,如果不是从事服务端研发的同学可以不看这本书或者后期有需要了再来看这本书。

2、选看的一个视频

陈硕老师以前也在博览网录制了一个跟《Mudo:Linux 多线程服务端编程》配套的视频。

陈硕老师的视频,公众号后台回复”陈硕“即可领取。

就如同他的书一样,这个视频的观看门槛一样比较高,如果不是专门从事服务端开发的C++人员,可以不看这个视频的。

3、一个付费专栏

如果你自学能力比较强,能够按照安心啃下来《TCPIP网络编程》和《Linux高性能服务端编程》这两本书也可以。

如果不可以,或者还是习惯通过视频的方式学习,那你可以试试一个牛客网的Linux C/C++服务器的开发专栏,不过是付费的。

网上免费资源有很多,但免费的资源质量良莠不齐,最好看一些经典的或公认的比较好的视频。

相对而言付费的资源质量有保证一些,我以前在牛客网进行求职分享的时候,看过他们的这个Linux C/C++服务器的开发专栏,看了其中的课表和主要内容,该讲的内容基本都涉及到了,基本上把《TCPIP网络编程》和《Linux高性能服务端编程》这两本书汇总最主要的一些知识点都覆盖到了,质量还不错。

最主要的是有人带着你学,比自己蒙头苦学好多了。

地址:https://www.nowcoder.com/courses/cover/live/504?coupon=AcNi2gn

当然了,如果你想要理解的更深,我还是建议你去好好看《TCPIP网络编程》和《Linux高性能服务端编程》这两本书。

第五阶段、大成

1、书籍

第五阶段的东西其实更多时候是在工作中用到的,比如并发编程、模板元等,对应的书籍有《 C++沉思录 》、《 C++ 模版元编程 》以及《C++并发编程实战》。

在求职的时候基本不需要看这些书籍,这些都属于后期,等你真正拿到offer了,确定从事C++相关的工作了再去看这些书籍,尤其是C++并发编程这块,国内目前没什么好的C++并发编程的书籍,《C++并发编程实战》算是矮子里拔将军了。

除此之外,我建议你回归C++这门语言的本源,那就是再从头看一遍《C++ Primer 第五版》或者把它当做一本字典,就放在你的工位上,遇到不确定的当场翻。

2、视频

如果你能学到第五阶段,已经很强了,至少比我强的多了。。。

那我就会把我珍藏的几个优秀视频推荐给你吧,基本都是体系原理、分布式相关的视频,在下面这篇文章中:

我学编程全靠B站了,真香-国外篇(第三期)

结语

好的 C++开发者从来不怕找不到工作,即使你日后从事 Java/Go的工作,由于语言的原理都是相通的,所以你的学习成本会比别人小的多。

我仔细想了想自己这些年的语言史:大学写了一年的C语言和VB,三年的C#;研究生写了一年的Python,两年的C++;工作了开始写JavaScript、Go以及Vue、React这些框架。

你要问我最喜欢哪门语言?

毫无疑问,绝对是是C++!

不为什么,就是喜欢它的严谨!

图片

C++天下第一!!!

种一棵树的最好时间是十年前,其次就是现在,真心希望学弟学妹们以及一些想要转计算机的小伙伴们加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/975621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

风控引擎如何快速添加模型,并实时了解运行状态?

目录 风控模型的主要类型 风控引擎如何管理模型? 模型就是基于目标群体的大规模采样数据,挖掘出某个实际问题或客观事物的现象本质及运行规律,利用抽象的概念分析存在问题或风险,计算推演出减轻、防范问题或风险的对策过程&…

【MySql】数据库的CRUD(增删查改)

写在最前面的话 哈喽,宝子们,今天给大家带来的是MySql数据库的CRUD(增删改查),CRUD是数据库非常基础的部分,也是后端开发日常工作中最主要的一项工作,接下来让我们一起进入学习吧,感…

如何指定this

<script>/*如何指定this的值可以通过2类方法指定1.调用时指定1.1call方法1.2apply方法2.创建时指定2.1bind方法2.2箭头函数*/// ------1.调用时指定------//1.1call方法:挨个传入参数//1.2apply方法:数组形式传入参数function foo (numA, numB) {console.log(this)consol…

10个最强大的AI驱动的3D建模工具【生成式AI】

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 在快速发展的技术世界中&#xff0c;人工智能 (AI) 已经改变了游戏规则&#xff0c;尤其是在 3D 对象生成领域。 AI 驱动的 3D 对象生成器彻底改变了我们创建和可视化 3D 模型的方式&#xff0c;使该过程更加高效、准确且可…

【LarkDay】UE开发者沙龙活动回顾

文章目录 1、相关咨询2、录播链接3、演讲内容 1、相关咨询 「Paraverse平行云」邀您线上参与LarkDay UE 开发者沙龙 UE超硬核实战攻略&#xff5c;LarkDay UE开发者沙龙回顾&#xff08;文末有福利&#xff09; LarkDay UE 开发者沙龙问卷报告与获奖名单 2、录播链接 【Bil…

每日一题 501二叉搜素树中的众数(中序遍历)

题目 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定 BST 满足如下定义&a…

固定资产卡片乱怎么管理

固定资产卡片是记录公司固定资产信息的重要工具&#xff0c;如果管理不善&#xff0c;容易造成卡片混乱、数据错误等问题。 为了避免这种情况的发生&#xff0c;可以采取以下措施&#xff1a;  建立完善的资产管理制度&#xff0c;明确固定资产的分类、标准和使用情况&#x…

【vue】vuex持久化插件vuex-persistedstate:

文章目录 一、说明&#xff1a;二、手动利用HTML5的本地存储&#xff1a;三、利用vuex-persistedstate插件【1】安装【2】配置使用【3】存储sessionStorage的情况【4】存储cookie的情况【5】默认持久化所有state&#xff0c;指定需要持久化的state,配置如下【6】vuex引用多个插…

荣耀开发者沙龙 · 北京站 活动精彩回顾

聚梦想&#xff0c;创非凡&#xff0c;荣耀云业务开发者沙龙北京站顺利落幕。来自全国各地的开发者伙伴齐聚北京&#xff0c;共同探讨在应用分发、服务分发、内容分发上的新可能&#xff0c;探索云业务基础能力和荣耀MagicOS的奥秘&#xff0c;解码商业推广平台的增长潜力&…

手写Mybatis:第16章-解析含标签的动态SQL语句

文章目录 一、目标&#xff1a;动态SQL语句二、设计&#xff1a;动态SQL语句三、实现&#xff1a;动态SQL语句3.0 依赖修改3.1 工程结构3.2 动态SQL语句类图3.3 基本类型注册器3.4 Ognl表达式处理3.4.1 Ognl类解析器3.4.2 Ognl缓存3.4.3 表达式求值器 3.5 标签节点解析3.5.1 文…

智能电力运维系统

力安科技智能电力运维系统依托电易云-智慧电力物联网&#xff0c;利用“互联网”的思维模式&#xff0c;通过计算机网络、大数据、云计算、物联网等技术打造“智能电力运维云平台”&#xff0c;采用“线上监管线下维护”深度融合的方式&#xff0c;创新实现全方位主动运维&…

SpringBoot整合MQ

1.创建工程并引入依赖 <!-- 添加rocketmq的启动器--><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.1</version></dependency>2.编写…

toFixed() 保留小数

let num item.value / total;item.rate parseFloat(num).toFixed(4) * 100 "%"; 不用parseFloat 有时会失真

使用java代码给Excel加水印,代码全,进阶版

以下代码&#xff0c;亲测可以跑通 1、上一篇博客用了Apache POI库3.8的版本的形式对Excel加了水印&#xff0c;但是最近主线版本用了4.1.2的形式&#xff0c;由于为了保持版本的兼容性&#xff0c;下面有开发了Apache POI的4.1.2的版本号的方案。 pom文件为&#xff1a; <d…

如何培养潜在客户?看完这篇你就懂了

图片来源于&#xff1a;SaleSmartly官网 有效的潜在客户培育策略将帮助您将更多潜在客户转化为付费客户。 但是&#xff0c;这并不总是那么容易——您必须与其他公司争夺受众的注意力&#xff0c;并向您的领导证明为什么值得投资您的产品或服务。在本文中&#xff0c;我将向您展…

手写call方法

<script>/*手写call方法1.定义myCall方法2.设置this并调用函数3.接收剩余参数 */Function.prototype.myCall function myCall (thisArg, ...args) {// 1.设置this并调用函数//给thisArg添加一个一定和原属性不重名的新属性&#xff08;方法&#xff09;//使用symbol来保…

TikTok Shop启动东南亚跨境9.9大促,重要性类比“黑五”

TikTok Shop启动东南亚跨境9.9大促 据了解&#xff0c;TikTok Shop即将开启东南亚99大促活动&#xff0c;其重要程度可类比于“中国的双11”“美国的黑色星期五”等购物节日&#xff0c;且整合了包括马来西亚、新加坡、菲律宾、越南和泰国五个国家站点的大促资源、推出相关的流…

VMware 虚拟机安装

目录 ​编辑 一、环境说明 1.1 VMware 版本 1.2 系统镜像版本 二、VMware环境安装 2.1 下载VMware 2.2 VMware安装 三、安装CentOS-8.3.2011虚拟机系统 3.1 新建VMware虚拟机 3.2 安装程序光盘映像文件&#xff08;iso&#xff09; 3.3 设置账号密码 3.4 设置虚拟机…

【会议征稿】第五届土木工程、环境资源与能源材料国际学术会议(CCESEM 2023)

第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09; 第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09;&#xff0c;定于2023年10月27日至29日在厦门举行。会议主要围绕“土木工程”、“环境资源”、“能…

Automotive 添加一个特权APP

Automotive 添加一个特权APP platform: android-13.0.0_r32 一. 添加一个自定义空调的app为例 路径&#xff1a;packages/apps/Car/MyHvac app内容可以自己定义&#xff0c;目录结构如下&#xff1a; 1.1 Android.bp package {default_applicable_licenses: ["Andr…