罗剑锋的C++实战笔记 / 20年老兵心法,让C++不再难学
罗剑锋
奇虎360技术专家,Nginx/OpenResty开源项目贡献者
  • 课程目录
  • 课程介绍
  • 开篇词 | 把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++之外的事情,主题是“时间管理”。

【仅限 100 个名额 | 立省 ¥30】

拼团+口令「maimaimai」到手仅 ¥69,立省 ¥30,仅限 100 个名额

你将获得

  • C++11/14 核心特性的代码实战
  • 标准库的 4 大核心工具详解
  • C++ 常见陷阱及其解决方案
  • 手把手带你开发一个服务端应用

讲师介绍

罗剑锋,网名“Chrono”,奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者,也是极客时间《透视HTTP协议》专栏的作者。他熟悉各种网络应用协议,专注于 C/C++、Linux、高性能编程等领域,著有《C++11/14 高级编程》《Nginx 完全开发指南》《Boost 程序库完全开发指南》《OpenResty 完全开发指南》等畅销书。

课程介绍

我们知道,C++是编程语言中的“万能选手”。它不仅功能强大、非常灵活,而且运行处理速度也很快,适用场景非常广泛。很多新的编程语言都从它身上获得了灵感。无论你是否使用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++,学习这个课程可以有什么收获吗?

答:

  1. 可以学习和借鉴高手在编码规范、面向对象、设计模式、设计原则方面的思考和实践经验。
  2. 开拓编程思路。C++强调“性能至上”,你可以了解到,在面对同样的问题时,C++是如何考虑并处理的。
  3. 更好地理解计算机系统的应用机制。C/C++是现代操作系统和许多底层开发框架的核心开发语言,了解C/C++的基本知识,就能够阅读操作系统或框架的源码,为上层应用服务。
  4. 提升混合编程的能力。用多种语言搭建混合系统是当前的一种流行趋势。使用少量C++代码改写系统中的关键组件,能够大幅度提升整体性能,做到“小投入,大产出”。

课程模块设计

课程主体分为5个模块。

概论:从程序的生命周期和编程范式这两个独特的角度来审视C++,帮你看清楚C++复杂的本质,透彻理解C++程序的运行机制和面向对象编程思想。

语言特性:精选C++中的自动类型推导、智能指针、lambda表达式等几个重要特性,帮你掌握惯用法,消灭代码里的隐患,写出清晰、易读、安全的代码。

标准库:详细介绍最核心的四个部分,即字符串、容器、算法和并发,让你用好这个最基本的库,学会泛型编程,提高程序的运行效率。

技能进阶:介绍C++标准之外的一些第三方工具,带你一起实现序列化、网络通信和性能分析等功能,解决实际开发中遇到的常见问题。

总结:结合C++来讲设计模式,并手把手带你开发一个C++服务端程序,帮你深入理解在项目中,如何更高效地使用C++写出更安全的代码。

除此之外,还特别设计了一个“轻松话题”模块,和你聊些C++之外的东西。这些话题涵盖的范围比较广,包括经典的学习资料、提高工作效率的工具等,让你在掌握核心硬技能的同时,还能拓宽知识面。

课程目录

适合人群

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

特别放送

订阅须知