开篇词 | C++这么难,为什么我们还要用C++?课前必读 | 有关术语发音及环境要求
01 | 堆、栈、RAII:C++里该如何管理资源?02 | 自己动手,实现C++的智能指针03 | 右值和移动究竟解决了什么问题?04 | 容器汇编 I:比较简单的若干容器05 | 容器汇编 II:需要函数对象的容器06 | 异常:用还是不用,这是个问题07 | 迭代器和好用的新for循环08 | 易用性改进 I:自动类型推断和初始化09 | 易用性改进 II:字面量、静态断言和成员函数说明符
10 | 到底应不应该返回对象?11 | Unicode:进入多文字支持的世界12 | 编译期多态:泛型编程和模板入门13 | 编译期能做些什么?一个完整的计算世界14 | SFINAE:不是错误的替换失败是怎么回事?15 | constexpr:一个常态的世界16 | 函数对象和lambda:进入函数式编程17 | 函数式编程:一种越来越流行的编程范式18 | 应用可变模板和tuple的编译期技巧19 | thread和future:领略异步中的未来20 | 内存模型和atomic:理解并发的复杂性
21 | 工具漫谈:编译、格式化、代码检查、排错各显身手22 | 处理数据类型变化和错误:optional、variant、expected和Herbception23 | 数字计算:介绍线性代数和数值计算库24 | Boost:你需要的“瑞士军刀”25 | 两个单元测试库:C++里如何进行单元测试?26 | Easylogging++和spdlog:两个好用的日志库27 | C++ REST SDK:使用现代C++开发网络应用
新春寄语 | 35年码龄程序员:人生漫长,走点弯路在所难免新春福利 | C++好书荐读
28 | Concepts:如何对模板进行约束?29 | Ranges:无迭代器的迭代和更方便的组合30 | Coroutines:协作式的交叉调度执行
加餐 | 部分课后思考题答案合集
结束语 | 终点已达,行程还要继续结课问卷获奖用户名单第二季回归|拿下Vim,让编程效率神器为我所用
期末测试 | 对于现代C++,你掌握了多少呢?