if
switch
for
while
do-while
continue
break
goto
return
inline
noexcept
throw
try
catch
decltype
auto
alignas
const
volatile
constexpr
nullptr
typedef
static_cast
dynamic_cast
const_cast
reinterpret_cast
new
delete
this
friend
override
final
explicit
static
这是一份核心 C++ 语言构造的参考手册。
基本概念
注释 ASCII 码表 名字与标识符 类型 - 基础类型 对象 - 作用域 - 生存期 定义与 ODR 名字查找 有限定 - 无限定 “如同”规则 未定义行为 内存模型与数据竞争 翻译阶段 main() 函数 模块(C++20)
main()
关键词
预处理器
#if - #ifdef - #else - #endif #define - # - ## - #include #error - #pragma - #line
表达式
值类别 求值顺序与定序 常量表达式 运算符 赋值 - 算术 自增与自减 逻辑 - 比较 成员访问与间接 调用、逗号、三元 sizeof - alignof(C++11) new - delete - typeid 运算符重载 默认比较(C++20) 运算符优先级 转换 隐式 - 显式 - 用户定义 static_cast - dynamic_cast const_cast - reinterpret_cast 字面量 布尔 - 整数 - 浮点 字符 - 字符串 nullptr(C++11) 用户定义(C++11)
sizeof
alignof
typeid
声明
命名空间声明 命名空间别名 引用 指针 - 数组 结构化绑定(C++17) 枚举与枚举项 存储期与连接 语言连接 inline 说明符 内联汇编 const/volatile constexpr(C++11) consteval(C++20) - constinit(C++20) decltype(C++11) - auto(C++11) alignas(C++11) typedef - 类型别名(C++11) 详述类型说明符 属性(C++11) static_assert(C++11)
consteval
constinit
static_assert
初始化
默认初始化 值初始化(C++03) 复制初始化 直接初始化 聚合初始化 列表初始化(C++11) 引用初始化 静态非局部初始化 零 - 常量 动态非局部初始化 有序 - 无序 复制消除
函数
函数声明 默认实参 变长实参 Lambda 表达式(C++11) 实参依赖查找 重载决议 运算符重载 重载集的地址 协程(C++20)
语句
if - switch for - 范围 for(C++11) while - do-while continue - break - goto - return synchronized 与 atomic(TM TS)
do
synchronized
atomic
类
类类型 - 联合类型 注入类名 数据成员 - 成员函数 静态成员 - 嵌套类 派生类 - using 声明 空基类优化 虚函数 - 抽象类 override(C++11) - final(C++11) 成员访问 - friend 位域 - this 指针 构造函数与成员初始化器列表 默认构造函数 - 析构函数 复制构造函数 - 复制赋值 移动构造函数(C++11) 移动赋值(C++11) 转换构造函数 - explicit 说明符
using
模板
模板形参与实参 类模板 - 函数模板 类成员模板 变量模板(C++14) 模板实参推导 显式特化 类模板实参推导(C++17) 部分特化 形参包(C++11) - sizeof...(C++11) 折叠表达式(C++17) 待决名 - SFINAE 约束与概念 (C++20)
sizeof...
异常
throw 表达式 try-catch 块 函数 try 块 noexcept 说明符(C++11) noexcept 运算符(C++11) 动态异常说明(C++17 前)
杂项
C++ 的历史 扩充命名空间 std 字母缩写
惯用手法
资源获取即初始化 三/五/零法则 指向实现的指针 零开销原则