基础¶
推荐学习路径¶
- (构建) 构建系统
- (类型) 数据类型
- (类型) const类型
- (类型) sizeof运算符
- (类型) 左值右值: 重点理解
const className& other
可以同时接受左值和右值 - (指针) 地址运算符
- (指针) 使用引用传参
- (函数) 作用域
- (函数) 循环
- (函数) 函数不能在其他函数内部
- (数组) 数组offset
- (数组) 向函数传递数组
- (指针) 内存分配
- (指针) 函数指针
- (指针) 智能指针: 重点理解
weak_ptr
- (对象) 类的介绍
- (对象) 权限修饰符
- (对象) 构造函数和析构函数
- (对象) 拷贝构造函数
- (对象) 拷贝赋值操作符
- (函数) 操作符重载
- (函数) 返回值优化: 特别注意RVO触发的条件
- (对象) 成员变量初始化列表, 构造函数初始化列表的一种
- (对象) struct的使用
- (对象) RAII
- (对象) 移动构造函数和移动赋值操作符: 重点是对于将亡值的理解, 我们在传递完参数之后就用不到他们了
- (对象) 规则 5/zero/3: 教你怎么正确的写出一个好的C++类
- (对象) 友元
- (对象) 列表初始化和
explicit
关键字: 这两个要一起看, 重点理解为啥explicit
和列表初始化要一起用 - (对象) 继承的基本概念
- (对象) 继承的访问控制
- (对象) 继承的构造函数调用: 搞懂调用的顺序, 以及基类构造函数初始化列表, 构造函数初始化列表的一种
- (对象) 为啥要用多态
- (对象)
virtual
和override
的使用 - (对象) 基类的析构函数套
virtual
- (对象) vtable
- (对象) 抽象类, 纯虚函数
- (对象) 多重继承, 菱形继承
- (类型)
const
的用法 - (对象) 成员函数修饰符
- (对象) 组合和聚合
- (对象) 虚拟继承
- (对象) 零初始化
- (对象) 类内初始化
- (对象) 委托构造函数初始化列表, 构造函数初始化列表的一种
- (对象) 类的空间分布
- (对象) pIMPL
- (对象)
this
关键字 - (对象)
static
关键字, 包括静态成员变量, 静态成员函数 - (模版) 为什么要用模版
- (模版) 函数模版, 使用
template
和auto
- (模版) 传入多个类型和非对象参数
- (模版) 部分模板化
- (模版) 可变参数模版
- (类型)
decltype
的用法 - (模版) 模板类
- (模版) 带有静态成员变量的模板类
- (模版) CTAD
- (模版) 默认参数
- (函数) 工厂函数
- (指针) 自定义
Deleter
- (类型)
union
的用法 - (类型)
std::variant
的用法 - (类型)
constexpr
的用法 - (调试)
assert
的用法 - (类型)
auto
的用法 - (类型) 类型转换, 包括隐式类型转换, 显式类型转换
- (对象) 嵌套类
- (函数) 函数对象(可调用对象)
- (函数) Lambda表达式
- (对象)
mutable
的用法 - (函数) Lambda表达式捕获变量
- (函数) 处理命令行参数,
std::get_env
的用法 - (函数)
using
的用法, 特别关注using::Base::Base
和using::Base::func
- (类型)
#define
的用法 - (类型)
__file__
和__line__
的用法, 还有std::source_location
的用法 - (函数) 默认参数
- (函数) 内联函数
- (类型) 内联变量
- (类型)
size_t
的用法 - (容器)
std::string
的用法 - (容器)
std::string_view
的用法 - (容器)
std::array
的用法, 简单了解一下迭代器 - (容器)
std::span
的用法 - (容器)
std::vector
的用法, 特别注意erase
的用法 - (容器)
std::list
的用法 - (容器)
std::forward_list
的用法 - (容器)
std::deque
的用法 - (容器)
std::set
的用法 - (容器)
std::unordered_set
的用法 - (容器)
std::multiset
的用法 - (容器)
std::unordered_multiset
的用法 - (容器)
std::pair
的用法 - (容器)
std::map
的用法 - (容器)
std::unordered_map
的用法 - (容器)
std::unordered_multimap
的用法 - (容器)
std::stack
的用法 - (容器)
std::queue
的用法 - (容器)
std::priority_queue
的用法 - (容器) 迭代器, 包括种类, 只读迭代器, 反向迭代器, 迭代器失效
引用¶
本笔记的所有内容是Mike Shh的C++课程的笔记.