- 课程目录
- 课程介绍
-
在线阅读:开篇词 | 把C++从“神坛”上拉下来,这次咱这么学
我把写C++ 20多年的实践经验全部浓缩在了这个课程里。学会了这些“武艺”,你一定能够用C++开发出优雅、高效的程序。
-
课前准备 | 搭建实验环境
这节课,我会给你推荐具体的操作系统、编译器,带你一步步搭建环境,还会给你分享我的GitHub链接。
-
01 | 重新认识C++:生命周期和编程范式
我决定从两个不太常见的角度来“剖析”一下C++,站在一个更高的层次上来审视它,帮你认清楚C++最本质的东西。
-
02 | 编码阶段能做什么:秀出好的code style
我们在编码阶段的首要目标,不是实现功能,而是写出清晰易读的代码,也就是要有好的code style。
-
03 | 预处理阶段能做什么:宏定义和条件编译
上一次,我讲了在编码阶段要尽量写出“人能够看懂的代码”。今天,我就继续讲讲编码后的预处理阶段。
-
04 | 编译阶段能做什么:属性和静态断言
编码阶段和预处理阶段生成的是人类可识别的源码,而编译阶段的目标是生成计算机可识别的机器码。
-
05 | 面向对象编程:怎样才能写出一个“好”的类?
我从设计思想、实现原则和编码准则这几个角度谈谈我对面向对象编程的看法,以及在C++里应用的一些经验技巧。
-
06 | auto/decltype:为什么要有自动类型推导?
从今天开始,我们将进入一个新的“语言特性”单元。这次要说的,就是C++11里引入的一个很重要的语言特性:自动类型推导。
-
07 | const/volatile/mutable:常量/变量究竟是怎么回事?
用好了const和volatile,可以让你的代码更安全、运行得更快。
-
08 | smart_ptr:智能指针到底“智能”在哪里?
智能指针到底“智能”在哪里?难道它就是解决一切问题的“灵丹妙药”吗?
-
09 | exception:怎样才能用好异常?
今天,我来和你好好聊聊“异常那些事”,说一说为什么要有异常,该怎么用好异常,有哪些要注意的地方。
-
10 | lambda:函数式编程带来了什么?
掌握了函数式编程,你就又多了一件“趁手的兵器”,可以更好地运用标准库里的容器和算法,写出更灵活、紧凑、优雅的代码。
-
11 | 一枝独秀的字符串:C++也能处理文本?
很多人在学习标准库时会感觉无从下手,找不到学习的“突破口”。今天,我就来讲讲字符串,看看在C++里该怎么处理文本数据。
-
12 | 三分天下的容器:恰当选择,事半功倍
今天,我就着重从数据结构的角度,来谈谈各种容器的区别、优缺点,还有如何选择最合适的容器。
-
13 | 五花八门的算法:不要再手写for循环了
学习掌握算法能够很好地训练你的编程思维,帮你开辟出面向对象之外的新天地。
-
14 | 十面埋伏的并发:多线程真的很难吗?
其实,这节课我更多的是讲“不用线程”的思维方式。因为,如果你一头扎进多线程的世界,就很容易“钻进死胡同”。
-
15 | 序列化:简单通用的数据交换格式有哪些?
今天,我来介绍三种既简单又高效的数据交换格式,看看在C++里怎么对数据做序列化和反序列化。
-
16 | 网络通信:我不想写原生Socket
今天,我来谈谈C++里的几个好用的网络通信库:libcurl、cpr和ZMQ,让你摆脱使用原生Socket编程的烦恼。
-
17 | 脚本语言:搭建高性能的混合系统
以C++为底层基础,Python和Lua作为上层建筑,共同搭建起高性能、易维护、可扩展的混合系统。
-
18 | 性能分析:找出程序的瓶颈
性能分析的关键是测量,而测量就需要使用工具,那么,你该选什么、又该怎么用工具呢?
-
19 | 设计模式(上):C++与设计模式有啥关系?
我对多年的实践经验进行了提炼和总结,希望帮你快速掌握并用好设计模式,写出高效、易维护的代码。
-
20 | 设计模式(下):C++是怎么应用设计模式的?
在C++里,该怎么应用单件、工厂、适配器、代理、职责链等这些经典的设计模式呢?
-
21 | 知识串讲(上):带你开发一个书店应用
接下来,我会用两节课的时间,详细讲解一个C++程序的实际开发过程,把前面的知识点都串联起来,帮你做到活学活用。
-
22 | 知识串讲(下):带你开发一个书店应用
希望你能熟练掌握我在课程里给你分享的开发技巧和经验建议,写出媲美甚至超越示例代码的C++程序。
-
期末测试 | 这些C++核心知识,你都掌握了吗?
课程的核心知识,我们已经学完了,你掌握得怎么样了呢?快来测试一下吧!
-
结束语 | 路远,未有穷期
一个人写出一个好程序不难,难的是一辈子只写好程序,不写坏程序。
-
轻松话题(一) | 4本值得一读再读的经典好书
今天,我给你推荐几本我认为值得一读再读的技术类好书。
-
轻松话题(二) | 给你分享我的工作百宝箱
今天,我来聊聊我的工作方式,给你介绍一下我用的开发环境,希望对你有所帮助。
-
轻松话题(三) | 提高生活质量的App
今天这期“轻松话题”,我想换个领域,跟你聊聊手机,谈谈怎么才能利用好手里的这块小屏幕。
-
轻松话题(四) | 真正高效的生活,是张弛有度
今天,我再说点C++之外的事情,主题是“时间管理”。
-
特别放送 | 和你聊聊现代C++里的“特殊容器”
今天这一讲,我们一起来聊聊C++17标准里提供的optional和variant这两种特殊容器。
-
在线阅读:罗剑锋老师出新课了?
罗剑锋老师出新课啦,《Kubernetes入门实战课》等你来~
课程介绍
特别推荐 你将获得 C++11/14 核心特性的代码实战 标准库的 4 大核心工具详解 C++ 常见陷阱及其解决方案 手把手带你开发一个服务端应用 讲师介绍 课程介绍...特别推荐
你将获得
- C++11/14 核心特性的代码实战
- 标准库的 4 大核心工具详解
- C++ 常见陷阱及其解决方案
- 手把手带你开发一个服务端应用
讲师介绍
课程介绍
但是,说起C++,很多人还会有另一个反应:“出了名的难学难用。”的确如此。因为它实在是太复杂了,有太多的特性和细节。
随着标准版本的演进,C++里包含的东西也越来越多。不断膨胀的核心语言加上庞大的标准库,让学习、使用C++的门槛无形中提高了很多,不仅“新手”学起来很难,就连“老手”也觉得用好它并不是一件容易的事情。毕竟,我们总是不可避免地会遇见一些难题:
- C++太庞大复杂了,该用哪些特性?
- 标准库里的东西这么多,核心的工具有哪些?
- 开源的C++库很多,但良莠不齐,哪些库最好用呢?
- ……
基于以上的这些难题,罗剑锋老师根据自己写C++代码的20多年的实践经验,精选出了C++11/14最好用、最实用的特性,不讲语法细节和内部实现原理,直接上代码实战,让你能轻松地看懂、学会。
另外,在讲解核心特性和工具的过程中,他也会带领你绕开语法细节、资源管理、库/工具等方面的陷阱,帮助你高效地写出更安全、更优雅的代码,真正解决C++难学、难调试、难优化的问题。
常见问题
问:这个课程和《现代C++实战30讲》有什么区别?
答:
《现代C++实战30讲》针对的是C++17/GCC7,有时候还会用到C++20/GCC 8,侧重深入、透彻地讲解语言特性背后的原理,适合想要学习最新特性、想要掌握C++高级技能的工程师。
本课程基于国内目前的开发现状,从C++11/14和较早版本的GCC(4.8/5.4)入手,精选出最常用、最好用的C++特性,结合代码实战告诉你该怎么用、不该怎么用,更适合对C++有所了解(1~5年)但又对其庞大、复杂的特性不知如何取舍的软件工程师。同时,想要借鉴高手实战经验的优秀工程师,同样也能从本课程中获益。
问:平时很少用C++,学习这个课程可以有什么收获吗?
答:
- 可以学习和借鉴高手在编码规范、面向对象、设计模式、设计原则方面的思考和实践经验。
- 开拓编程思路。C++强调“性能至上”,你可以了解到,在面对同样的问题时,C++是如何考虑并处理的。
- 更好地理解计算机系统的应用机制。C/C++是现代操作系统和许多底层开发框架的核心开发语言,了解C/C++的基本知识,就能够阅读操作系统或框架的源码,为上层应用服务。
- 提升混合编程的能力。用多种语言搭建混合系统是当前的一种流行趋势。使用少量C++代码改写系统中的关键组件,能够大幅度提升整体性能,做到“小投入,大产出”。
课程模块设计
课程主体分为5个模块。
概论:从程序的生命周期和编程范式这两个独特的角度来审视C++,帮你看清楚C++复杂的本质,透彻理解C++程序的运行机制和面向对象编程思想。
语言特性:精选C++中的自动类型推导、智能指针、lambda表达式等几个重要特性,帮你掌握惯用法,消灭代码里的隐患,写出清晰、易读、安全的代码。
标准库:详细介绍最核心的四个部分,即字符串、容器、算法和并发,让你用好这个最基本的库,学会泛型编程,提高程序的运行效率。
技能进阶:介绍C++标准之外的一些第三方工具,带你一起实现序列化、网络通信和性能分析等功能,解决实际开发中遇到的常见问题。
总结:结合C++来讲设计模式,并手把手带你开发一个C++服务端程序,帮你深入理解在项目中,如何更高效地使用C++写出更安全的代码。
除此之外,还特别设计了一个“轻松话题”模块,和你聊些C++之外的东西。这些话题涵盖的范围比较广,包括经典的学习资料、提高工作效率的工具等,让你在掌握核心硬技能的同时,还能拓宽知识面。
课程目录

适合人群
- 知道C/C++的基本语法规则(如指针、类、继承等),对泛型有简单的认识,但又对C++的庞大复杂感到不知所措的C/C++软件工程师。
- 不以C++为主要工作语言,但想要借助C++开拓思路、实现混合编程的工程师。

