一、基础篇
1、为什么要⽤ C++ Python 和 C++ ⽐较
语法
对象的⽣命周期
性能
2、Hello
(1)基本语法和概念
函数
类型和变量
分⽀语句
常量
数组、指针和引⽤
(2)编译和链接
3、⽤户⾃定义类型
结构
类
联合
枚举
4、 模块化管理
翻译单元和编译过程
名空间
CMake ⼊门
5、C++ 的资源管理
栈
堆
RAII
C++ 各种类型对象的⽣命期
6、⾯向对象开发
类和封装
⾮静态特殊成员函数
具体类型
抽象类型:虚函数和继承体系
静态绑定和动态绑定
7、三法则
8、C++ 标准库概览
9、string、string_view(C++17)和正则表达式(C++11)
10、tuple(C++11)
11、输⼊输出流
12、标准容器
string
array
序列容器
关联容器
⽆序关联容器(C++11)
容器适配器
13、迭代器
概念
常⽤迭代器
基于范围的循环(C++11)
对⽂件内容的迭代器
14、标准算法
15、智能指针(C++11)
唯⼀拥有权
共享引⽤计数
16、时间(C++11)
17、模板基础
模板
实例化
特化
静态多态和动态多态
二、提⾼篇
1、⼯具
GCC
Clang
Clang-Format
Clang-Tidy
Clangd
CMake
Valgrind
Godbolt
CppInsights
2、C++11/14/17 的易⽤性改进
⾃动类型推断
列表初始化和统⼀初始化
类数据成员的默认初始化
⾃定义字⾯量
语⾔的字⾯量改进
静态断⾔
override 和 final 说明符
3、五法则和零法则
4、异常和错误处理
不⽤异常的错误处理
异常的意义
为什么 Google(或其他某某公司/项⽬)不使⽤异常
异常的问题和好处
5、对象返回和返回值优化
6、⾼级模板技巧
编译期计算
编译期类型推导
SFINAE
constexpr(C++11/14/17)
7、函数式编程
函数对象
Lambda 表达式
函数式编程简介
应⽤可变模板和 tuple 的编译期技巧
8、并发编程(C++11)
mutex
thread
future 和 promise
内存序问题和原⼦量
并发带来的接⼝影响
9、返回值的分⽀(C++17)
optional
variant
expected
10、瑞⼠军⼑ boost
课程收益
通过本次课程,你将清楚地知道某个功能为什么存在,应该在什么场景下使⽤,以及这样⽤的好处;你 将能够熟练掌握 C++ 语⾔的特性,并领会到 C++ 抽象表达的精髓;你将能够实践 C++ 开发的惯⽤模 式,并通过应⽤这些模式,在实践中征服复杂性,写出更简洁、易读、可维护的代码。
课程准备
每个学员应当准备⼀台笔记本电脑,上⾯可以访问开发环境。具体可以是:
本机运⾏ Linux 或 macOS
远程 SSH 到 Linux 服务器
Cygwin 模拟环境
Docker 环境
Windows Subsystem for Linux
不管哪种环境,都需要安装 GCC(建议⾄少版本 7.3)、Make 和 CMake。