for
do-while
const
volatile
typedef
new
delete
this
这是核心 C++ 语言构造的参考。
基本概念
注释 ASCII 表 标点符号 名称和标识符 类型 – 基本类型 对象 – 作用域 – 生命周期 定义和 ODR 名称查找 限定 – 非限定 (ADL) 如同规则 未定义行为 (UB) 内存 – 多线程 (C++11) 字符集和编码 翻译阶段 main 函数 模块 (C++20)
main
关键字
预处理器
#if - #ifdef - #ifndef - #elif #elifdef - #elifndef (C++23) #define - # - ## #include - #pragma #line - #error #warning (C++23)
#if
#ifdef
#ifndef
#elif
#elifdef
#elifndef
#define
#
##
#include
#pragma
#line
#error
#warning
表达式
值类别 求值顺序 常量表达式 运算符 赋值 – 算术 递增和递减 逻辑 – 比较 成员访问 调用、逗号、三元运算符 sizeof – alignof (C++11) new – delete – typeid 替代表示 默认比较 (C++20) 运算符优先级 转换 隐式 – 显式 用户定义的 常用算术转换 static_cast – dynamic_cast const_cast reinterpret_cast 字面量 (转义序列) 布尔值 – 整数 – 浮点数 字符 – 字符串 nullptr (C++11) 用户定义的 (UDL) (C++11)
sizeof
alignof
typeid
static_cast
dynamic_cast
const_cast
reinterpret_cast
nullptr
声明
冲突声明 存储持续时间和链接 翻译单元本地 (C++20) 语言链接 命名空间声明 命名空间别名 引用 – 指针 – 数组 结构化绑定 (C++17) 枚举和枚举器 inline 说明符 内联汇编 const/volatile constexpr (C++11) consteval (C++20) constinit (C++20) decltype (C++11) auto (C++11) typedef – 类型别名 (C++11) 详细类型说明符 属性 (C++11) alignas (C++11) static_assert (C++11)
inline
constexpr
consteval
constinit
decltype
auto
alignas
static_assert
初始化
默认初始化 值初始化 复制初始化 直接初始化 聚合初始化 列表初始化 (C++11) 引用初始化 静态非本地初始化 零 – 常量 动态非本地初始化 有序 – 无序 复制省略 (RVO)
函数
函数声明 默认参数 可变参数 Lambda 表达式 (C++11) 重载解析 运算符重载 重载集的地址 协程 (C++20)
语句
if – switch for – 范围for (C++11) while – do-while continue – break goto – return synchronized/atomic (TM TS)
if
switch
while
do
continue
break
goto
return
synchronized
atomic
类
类类型 – 联合类型 注入类名 数据成员 – 位域 成员函数 – this 指针 静态成员 – 嵌套类 派生类 – using 声明 空基优化 (EBO) 虚函数 – 抽象类 (ABC) override (C++11) – final (C++11) 成员访问 – friend 构造函数和成员初始化列表 默认构造函数 – 析构函数 复制构造函数 – 复制赋值 移动构造函数 (C++11) 移动赋值 (C++11) 转换构造函数 explicit 指定符
using
override
final
friend
explicit
模板
模板参数和实参 类模板 – 函数模板 变量模板 (C++14) 类成员模板 模板实参推断 函数 – 类 (CTAD) (C++17) 显式特化 – 偏特化 参数包 (C++11) sizeof... (C++11) 折叠表达式 (C++17) 包索引 (C++26) 依赖名称 – SFINAE 约束和概念 (C++20) 要求表达式 (C++20)
sizeof...
异常
try 块 抛出异常 处理异常 异常说明 noexcept 说明 (C++11) 动态说明 (直到 C++17*) noexcept 运算符 (C++11)
try
noexcept
其他
C++ 历史 扩展命名空间 std 首字母缩略词: CPO, IFNDR, NDR, NTBS, NTTP, RAO, SOCCC, TMP, TU
习惯用法
奇怪的递归模板模式 (CRTP) 指向实现的指针 (PIMPL) 资源获取即初始化 (RAII) 三法则/五法则/零法则 零开销原则