1.课程简介(0.5h)
C++的特点与演化
C++ 的版本简介:98,03,11,14,17,20
如何学习 C++
2.资源管理和对象的基本规则(0.5h)
堆与栈
RAII
对象的拷贝和移动
对象的特殊成员函数
三法则
3.移动语义与右值引用(1h)
值类别
生命周期和表达式类型
移动的实现和意义
移动和 noexcept
对象的生命期
转发引用
五法则
4.智能指针(1h)
auto_ptr 和 unique_ptr
shared_ptr 和 weak_ptr
make_unique 和 make_shared;与聚合初始化的兼容性问题
5.容器和类容器(1h)
string
序列容器
关联容器
无序关联容器
容器适配器
array
6.迭代器和循环(0.75h)
迭代器种类
常用迭代器
范围 for 循环
常见问题和陷阱
7.对象返回和错误处理(0.75h)
返回值优化
异常的意义
异常的问题
不用异常的错误处理
[[nodiscard]](C++17)
8.语言易用性改进(1.5h)
自动类型推断
列表初始化和统一初始化
类数据成员的默认初始化
用户定义字面量
二进制字面量和数字分隔符
nullptr
静态断言
if/switch 中的变量初始化(C++17)
override 和 final 说明符
推导指引(C++17)
9.其他重要新特性(2h)
using 类型别名
强类型 enum
std::byte(C++17)
定宽整数类型
UTF-16、UTF-32(C++11)和 UTF-8 支持(C++20)
tuple、tie(C++11)和结构化绑定(C++17)
any、optional 和 variant(C++17)
时间库
随机数库
正则表达式库
10. 视图(0.5h)
string_view(C++17)
span(GSL 和 C++20)
Ranges 里的视图(C++20)
11. 模板基础(0.75h)
模板
实例化
特化
静态多态和动态多态
12. 函数式编程与 Lambda 表达式(0.75h)
函数对象
Lambda 表达式
泛型 lambda 表达式
function 模板
函数式编程简介
13. 编译期计算(1h)
编译期计算
编译期类型推导
SFINAE
constexpr 变量
inline constexpr 变量(C++17)
constexpr 函数
if constexpr(C++17)
变参模板
折叠表达式(C++17)
应用可变模板和 tuple 的编译期技巧(C++17)
14. 并发编程(1h)
mutex 和 lock_guard
shared_mutex、unique_lock 和 shared_lock(C++17)
thread
future 和 promise
内存序问题和原子量
并发带来的接口影响
15. 未来(0.5h)
C++20 概览
C++ 的未来展望
课程收益
通过本次课程,你将清楚地知道某个新功能为什么存在,应该在什么场景下使用,以及这样用的好处;你 将能够熟练掌握现代 C++ 语言的特性,并领会到 C++ 抽象表达的精髓;你将能够实践 C++ 开发的惯 用模式,并通过应用这些模式,在实践中征服复杂性,写出更简洁、易读、可维护的代码。