C++23 · 前置:C
C++ 速查手册
面向已掌握 C 的读者,集中查询现代 C++23 的语言机制、标准库和工程实践。
8 / 80 / 400
公开章节 / 任务入口 / 关键词与别名
章节地图
建议阅读路线
按任务查找
- 按声明顺序推断初始化而不是按列表书写顺序
- 构造、析构与对象初始化 · 基类与成员初始化顺序
- 把 std::move 解释为允许移动的值类别转换
- 引用、const、值类别与生命周期 · std::move 只是转换
- 把非默认释放操作编码进智能指针类型或控制块
- RAII、资源所有权与智能指针 · 自定义删除器
- 把共同初始化逻辑委托给同类构造函数
- 构造、析构与对象初始化 · 委托构造函数
- 把默认值放在单一可见声明并理解调用点绑定
- 函数重载、名字空间、强类型枚举与别名 · 默认实参
- 把现有对象替换为源对象的等价值
- 复制、移动与特殊成员函数规则 · 复制赋值运算符
- 把资源释放绑定到对象生命周期
- 从 C 进入现代 C++ · 资源管理与对象生命周期
- 保留表达式的引用和值类别语义
- 初始化、类型推导与现代语法 · decltype(auto) 与返回类型
- 比较精确匹配、提升和标准转换
- 函数重载、名字空间、强类型枚举与别名 · 重载决议与转换序列
- 避免把 C++ 当作只增加类的 C
- 从 C 进入现代 C++ · 常见陷阱
- 避免二义重载、全局 using 和 ODR 违规
- 函数重载、名字空间、强类型枚举与别名 · 常见陷阱
- 避免公开数据、失效不变量和滥用 friend
- 类、对象、访问控制与封装 · 常见陷阱
- 避免双重释放、遗漏移动和依赖复制消除次数
- 复制、移动与特殊成员函数规则 · 常见陷阱
- 避免推导出悬垂引用或意外初始化形式
- 初始化、类型推导与现代语法 · 常见陷阱
- 避免依赖列表顺序、体内赋值和析构抛出
- 构造、析构与对象初始化 · 常见陷阱
- 避免移动后假设、过度 const 和引用失效
- 引用、const、值类别与生命周期 · 常见陷阱
- 表达类级共享状态和不依赖对象的操作
- 类、对象、访问控制与封装 · 静态数据与静态成员函数
- 从表达式类别判断绑定和重载行为
- 引用、const、值类别与生命周期 · glvalue、prvalue、xvalue 地图
- 从初始化器推导类型并识别 cv/ref 丢弃规则
- 初始化、类型推导与现代语法 · auto 占位类型推导
- 从可转移源初始化新对象并保持源有效
- 复制、移动与特殊成员函数规则 · 移动构造函数
- 从类定义创建具有独立状态的对象
- 类、对象、访问控制与封装 · 类定义与对象
- 从现有对象创建独立等价值
- 复制、移动与特殊成员函数规则 · 复制构造函数
- 发现返回局部引用和超出生存期引用
- 引用、const、值类别与生命周期 · 悬垂引用识别
- 分离声明和定义并避免重复定义
- 函数重载、名字空间、强类型枚举与别名 · 头文件接口与链接边界
- 根据可空性、重绑定和所有权选择参数形式
- 引用、const、值类别与生命周期 · 指针与引用的接口选择
- 根据资源所有权选择需要声明的特殊成员
- 复制、移动与特殊成员函数规则 · 规则零、三与五
- 控制单实参构造引起的隐式转换
- 构造、析构与对象初始化 · 转换构造与 explicit
- 理解容器重定位为何偏好不抛出的移动
- 复制、移动与特殊成员函数规则 · noexcept 移动与容器选择
- 理解已完成子对象在异常传播时的销毁
- 构造、析构与对象初始化 · 部分构造失败
- 判断对象是否被零初始化或保持未确定值
- 初始化、类型推导与现代语法 · 默认初始化与值初始化
- 判断非常量与常量左值引用可绑定的表达式
- 引用、const、值类别与生命周期 · 左值引用绑定
- 判断构造表达式何时使用推导指引
- 初始化、类型推导与现代语法 · 类模板实参推导
- 判断临时对象何时存在以及引用能否延长其生命
- 引用、const、值类别与生命周期 · 临时对象具体化与生命周期延长
- 区分抽象成本、优化机会和性能承诺
- 从 C 进入现代 C++ · 零开销抽象的含义
- 区分存储、对象生存期和析构完成
- 构造、析构与对象初始化 · 对象生命周期的开始与结束
- 区分构造函数角色和可用性
- 构造、析构与对象初始化 · 默认、普通与复制移动构造概览
- 区分兼容表象、共同语法和不同语言保证
- 从 C 进入现代 C++ · C 与 C++ 的语言边界
- 区分默认、值、直接、复制和列表初始化
- 初始化、类型推导与现代语法 · 初始化形式地图
- 区分普通右值引用与依赖推导的转发引用
- 引用、const、值类别与生命周期 · 转发引用预览
- 区分未加括号名称和一般表达式的结果
- 初始化、类型推导与现代语法 · decltype 的两套规则
- 区分引入单个名称和开放整个名字空间
- 函数重载、名字空间、强类型枚举与别名 · using 声明与 using 指令
- 让构造和公开操作共同维护对象不变量
- 类、对象、访问控制与封装 · 类不变量与合法状态
- 让只读对象只能调用不修改可观察状态的接口
- 类、对象、访问控制与封装 · const 成员函数
- 让资源有效期等于管理对象的生命周期
- RAII、资源所有权与智能指针 · RAII 的获取与释放合同
- 设计可区分且语义一致的重载集合
- 函数重载、名字空间、强类型枚举与别名 · 重载集与函数签名
- 设计只读接口并区分顶层与底层 const
- 引用、const、值类别与生命周期 · const 正确性
- 识别 auto 与模板参数推导的共同边界
- 初始化、类型推导与现代语法 · 模板推导规则预览
- 识别编译器可隐式声明的特殊成员
- 复制、移动与特殊成员函数规则 · 六个特殊成员函数总览
- 识别花括号调用优先选择列表重载的情形
- 初始化、类型推导与现代语法 · initializer_list 的重载优先级
- 识别隐式对象参数和成员访问
- 类、对象、访问控制与封装 · 成员函数与 this
- 释放旧资源并接管源对象资源
- 复制、移动与特殊成员函数规则 · 移动赋值运算符
- 通过成员对象构建更大的行为单元
- 类、对象、访问控制与封装 · 组合与成员对象
- 为多个构造函数共享成员默认值
- 构造、析构与对象初始化 · 默认成员初始化器
- 为句柄、锁或会话设计专用管理对象
- RAII、资源所有权与智能指针 · 非内存资源的 RAII 包装
- 为异常、状态值和类型化结果选择边界
- 从 C 进入现代 C++ · 错误表达方式概览
- 用 public、protected、private 维护接口边界
- 类、对象、访问控制与封装 · 访问控制与封装
- 用 using 表达类型名称和参数化别名
- 函数重载、名字空间、强类型枚举与别名 · 类型别名与别名模板
- 用 weak_ptr 打破环并避免无意义共享
- RAII、资源所有权与智能指针 · 共享环与常见陷阱
- 用标准工厂一次性构造受管理对象
- RAII、资源所有权与智能指针 · make_unique 与 make_shared
- 用不可复制、可移动的句柄表达唯一所有者
- RAII、资源所有权与智能指针 · unique_ptr 的独占所有权
- 用花括号初始化阻止不允许的窄化
- 初始化、类型推导与现代语法 · 列表初始化与窄化检查
- 用类型系统表达接口约束而非约定注释
- 从 C 进入现代 C++ · 类型安全与抽象边界
- 用临时值和 swap 维护赋值异常安全
- 复制、移动与特殊成员函数规则 · copy-and-swap 与有效状态
- 用名字空间组织接口并理解限定查找
- 函数重载、名字空间、强类型枚举与别名 · 名字空间与名称查找
- 用明确 C++23 模式编译而不依赖扩展
- 从 C 进入现代 C++ · 源文件、语言模式与工具链
- 用强类型枚举限制隐式转换和名称泄漏
- 函数重载、名字空间、强类型枚举与别名 · enum class 与底层类型
- 用右值引用表达可转移状态的对象
- 引用、const、值类别与生命周期 · 右值引用绑定
- 用值、复制和移动表达独立对象状态
- 从 C 进入现代 C++ · 值语义作为默认建模方式
- 用值、引用和智能指针参数表达所有权变化
- RAII、资源所有权与智能指针 · 所有权转移与接口签名
- 优先选择标准容器、字符串和算法
- 从 C 进入现代 C++ · 标准库优先的默认实践
- 预测特殊成员何时默认生成或被删除
- 复制、移动与特殊成员函数规则 · 隐式生成、抑制与删除
- 在不延长生命周期的前提下观察共享对象
- RAII、资源所有权与智能指针 · weak_ptr 的非拥有观察
- 在对象生命周期结束时可靠释放所拥有资源
- 构造、析构与对象初始化 · 析构函数合同
- 在多翻译单元中正确定义内联实体
- 函数重载、名字空间、强类型枚举与别名 · inline 与单一定义规则
- 在构造函数体执行前直接初始化成员
- 构造、析构与对象初始化 · 成员初始化列表
- 在接口中明确资源由谁拥有和释放
- RAII、资源所有权与智能指针 · 独占、共享与观察所有权
- 只把默认访问差异当作语法默认值
- 类、对象、访问控制与封装 · class 与 struct 的默认访问
- 只为紧密协作接口授予非成员访问
- 类、对象、访问控制与封装 · friend 的受控访问边界
- 只在真实共享生命周期时使用引用计数
- RAII、资源所有权与智能指针 · shared_ptr 的共享所有权
- 逐项替换手工资源管理和弱类型接口
- 从 C 进入现代 C++ · 从 C 迁移的检查清单
关键词索引
- 按值传递
- RAII、资源所有权与智能指针 · 所有权转移与接口签名
- 绑定
- 引用、const、值类别与生命周期 · 左值引用绑定
- 编译模式
- 从 C 进入现代 C++ · 源文件、语言模式与工具链
- 标准库
- 从 C 进入现代 C++ · 标准库优先的默认实践
- 表达式类别
- 初始化、类型推导与现代语法 · decltype 的两套规则
- 别名模板
- 函数重载、名字空间、强类型枚举与别名 · 类型别名与别名模板
- 不变量破坏
- 类、对象、访问控制与封装 · 常见陷阱
- 参数类型
- 函数重载、名字空间、强类型枚举与别名 · 重载集与函数签名
- 参数模式
- 初始化、类型推导与现代语法 · 模板推导规则预览
- 成本模型
- 从 C 进入现代 C++ · 零开销抽象的含义
- 成员
- 类、对象、访问控制与封装 · 类定义与对象
- 成员初始化列表
- 构造、析构与对象初始化 · 成员初始化列表
- 成员对象
- 类、对象、访问控制与封装 · 组合与成员对象
- 成员对象
- 构造、析构与对象初始化 · 成员初始化列表
- 成员访问
- 类、对象、访问控制与封装 · 成员函数与 this
- 成员函数
- 类、对象、访问控制与封装 · 成员函数与 this
- 成员可用性
- 复制、移动与特殊成员函数规则 · 隐式生成、抑制与删除
- 成员默认值
- 构造、析构与对象初始化 · 默认成员初始化器
- 成员声明顺序
- 构造、析构与对象初始化 · 基类与成员初始化顺序
- 抽象
- 从 C 进入现代 C++ · 类型安全与抽象边界
- 初始化
- 初始化、类型推导与现代语法 · 初始化形式地图
- 初始化复用
- 构造、析构与对象初始化 · 委托构造函数
- 初始化覆盖
- 构造、析构与对象初始化 · 默认成员初始化器
- 初始化歧义
- 初始化、类型推导与现代语法 · 常见陷阱
- 初始化顺序
- 构造、析构与对象初始化 · 基类与成员初始化顺序
- 初始化顺序
- 构造、析构与对象初始化 · 常见陷阱
- 存储期
- 构造、析构与对象初始化 · 对象生命周期的开始与结束
- 错误处理
- 从 C 进入现代 C++ · 错误表达方式概览
- 错误迁移
- 从 C 进入现代 C++ · 常见陷阱
- 底层 const
- 引用、const、值类别与生命周期 · const 正确性
- 底层类型
- 函数重载、名字空间、强类型枚举与别名 · enum class 与底层类型
- 调用点
- 函数重载、名字空间、强类型枚举与别名 · 默认实参
- 顶层 const
- 初始化、类型推导与现代语法 · auto 占位类型推导
- 顶层 const
- 引用、const、值类别与生命周期 · const 正确性
- 定义
- 函数重载、名字空间、强类型枚举与别名 · inline 与单一定义规则
- 独立状态
- 复制、移动与特殊成员函数规则 · 复制构造函数
- 独占所有权
- RAII、资源所有权与智能指针 · 独占、共享与观察所有权
- 独占所有权
- RAII、资源所有权与智能指针 · unique_ptr 的独占所有权
- 对象
- 类、对象、访问控制与封装 · 类定义与对象
- 对象副本
- 复制、移动与特殊成员函数规则 · 复制构造函数
- 对象构造
- RAII、资源所有权与智能指针 · make_unique 与 make_shared
- 对象关系
- 类、对象、访问控制与封装 · 组合与成员对象
- 对象切片预览
- 类、对象、访问控制与封装 · 常见陷阱
- 对象生命周期
- 从 C 进入现代 C++ · 资源管理与对象生命周期
- 对象生命周期
- 构造、析构与对象初始化 · 对象生命周期的开始与结束
- 对象生命周期
- RAII、资源所有权与智能指针 · RAII 的获取与释放合同
- 对象状态
- 从 C 进入现代 C++ · 值语义作为默认建模方式
- 二义性
- 函数重载、名字空间、强类型枚举与别名 · 重载决议与转换序列
- 二义性
- 函数重载、名字空间、强类型枚举与别名 · 常见陷阱
- 翻译单元
- 函数重载、名字空间、强类型枚举与别名 · inline 与单一定义规则
- 返回类型
- 初始化、类型推导与现代语法 · decltype(auto) 与返回类型
- 访问授权
- 类、对象、访问控制与封装 · friend 的受控访问边界
- 非成员函数
- 类、对象、访问控制与封装 · friend 的受控访问边界
- 非内存资源
- RAII、资源所有权与智能指针 · 非内存资源的 RAII 包装
- 非拥有引用
- RAII、资源所有权与智能指针 · weak_ptr 的非拥有观察
- 封装
- 从 C 进入现代 C++ · 类型安全与抽象边界
- 封装
- 类、对象、访问控制与封装 · 访问控制与封装
- 封装边界
- 类、对象、访问控制与封装 · friend 的受控访问边界
- 复制
- 从 C 进入现代 C++ · 值语义作为默认建模方式
- 复制
- 复制、移动与特殊成员函数规则 · 六个特殊成员函数总览
- 复制初始化
- 初始化、类型推导与现代语法 · 初始化形式地图
- 复制赋值
- 复制、移动与特殊成员函数规则 · 复制赋值运算符
- 复制构造
- 复制、移动与特殊成员函数规则 · 复制构造函数
- 复制消除
- 复制、移动与特殊成员函数规则 · 常见陷阱
- 公开数据
- 类、对象、访问控制与封装 · 常见陷阱
- 共享所有权
- RAII、资源所有权与智能指针 · 独占、共享与观察所有权
- 共享所有权
- RAII、资源所有权与智能指针 · shared_ptr 的共享所有权
- 构造表达式
- 初始化、类型推导与现代语法 · 类模板实参推导
- 构造次序
- 构造、析构与对象初始化 · 基类与成员初始化顺序
- 构造函数
- 构造、析构与对象初始化 · 默认、普通与复制移动构造概览
- 构造函数
- 构造、析构与对象初始化 · 默认成员初始化器
- 构造函数体
- 构造、析构与对象初始化 · 成员初始化列表
- 构造链
- 构造、析构与对象初始化 · 委托构造函数
- 构造失败
- 构造、析构与对象初始化 · 部分构造失败
- 构造完成
- 构造、析构与对象初始化 · 对象生命周期的开始与结束
- 观察引用
- RAII、资源所有权与智能指针 · 独占、共享与观察所有权
- 规则零
- 复制、移动与特殊成员函数规则 · 规则零、三与五
- 规则三
- 复制、移动与特殊成员函数规则 · 规则零、三与五
- 规则五
- 复制、移动与特殊成员函数规则 · 规则零、三与五
- 过度 const
- 引用、const、值类别与生命周期 · 常见陷阱
- 过度共享
- RAII、资源所有权与智能指针 · 共享环与常见陷阱
- 函数签名
- 函数重载、名字空间、强类型枚举与别名 · 重载集与函数签名
- 函数重载
- 函数重载、名字空间、强类型枚举与别名 · 重载集与函数签名
- 合法状态
- 类、对象、访问控制与封装 · 类不变量与合法状态
- 宏
- 从 C 进入现代 C++ · 从 C 迁移的检查清单
- 花括号
- 初始化、类型推导与现代语法 · 列表初始化与窄化检查
- 花括号
- 初始化、类型推导与现代语法 · initializer_list 的重载优先级
- 基类
- 构造、析构与对象初始化 · 基类与成员初始化顺序
- 兼容性
- 从 C 进入现代 C++ · C 与 C++ 的语言边界
- 接口边界
- 函数重载、名字空间、强类型枚举与别名 · 头文件接口与链接边界
- 接口签名
- RAII、资源所有权与智能指针 · 所有权转移与接口签名
- 接口设计
- 类、对象、访问控制与封装 · 类不变量与合法状态
- 接口约束
- 从 C 进入现代 C++ · 类型安全与抽象边界
- 借用
- RAII、资源所有权与智能指针 · 所有权转移与接口签名
- 精确匹配
- 函数重载、名字空间、强类型枚举与别名 · 重载决议与转换序列
- 静态成员
- 类、对象、访问控制与封装 · 静态数据与静态成员函数
- 静态函数
- 类、对象、访问控制与封装 · 静态数据与静态成员函数
- 旧资源
- 复制、移动与特殊成员函数规则 · 移动赋值运算符
- 局部对象
- 引用、const、值类别与生命周期 · 悬垂引用识别
- 句柄
- RAII、资源所有权与智能指针 · 非内存资源的 RAII 包装
- 具体化
- 引用、const、值类别与生命周期 · 临时对象具体化与生命周期延长
- 可观察状态
- 类、对象、访问控制与封装 · const 成员函数
- 可见性
- 函数重载、名字空间、强类型枚举与别名 · 默认实参
- 可空性
- 引用、const、值类别与生命周期 · 指针与引用的接口选择
- 控制块
- RAII、资源所有权与智能指针 · shared_ptr 的共享所有权
- 括号
- 初始化、类型推导与现代语法 · decltype 的两套规则
- 类
- 类、对象、访问控制与封装 · 类定义与对象
- 类不变量
- 类、对象、访问控制与封装 · 类不变量与合法状态
- 类级状态
- 类、对象、访问控制与封装 · 静态数据与静态成员函数
- 类模板
- 初始化、类型推导与现代语法 · 类模板实参推导
- 类型安全
- 从 C 进入现代 C++ · 类型安全与抽象边界
- 类型别名
- 函数重载、名字空间、强类型枚举与别名 · 类型别名与别名模板
- 类型接口
- 函数重载、名字空间、强类型枚举与别名 · 类型别名与别名模板
- 类型推导
- 初始化、类型推导与现代语法 · auto 占位类型推导
- 类型转换
- 引用、const、值类别与生命周期 · std::move 只是转换
- 链接
- 函数重载、名字空间、强类型枚举与别名 · 头文件接口与链接边界
- 列表初始化
- 初始化、类型推导与现代语法 · 初始化形式地图
- 列表初始化
- 初始化、类型推导与现代语法 · 列表初始化与窄化检查
- 临时对象
- 引用、const、值类别与生命周期 · 临时对象具体化与生命周期延长
- 零初始化
- 初始化、类型推导与现代语法 · 默认初始化与值初始化
- 零开销抽象
- 从 C 进入现代 C++ · 零开销抽象的含义
- 裸资源
- 从 C 进入现代 C++ · 从 C 迁移的检查清单
- 名称查找
- 函数重载、名字空间、强类型枚举与别名 · 名字空间与名称查找
- 名称冲突
- 函数重载、名字空间、强类型枚举与别名 · using 声明与 using 指令
- 名字空间
- 函数重载、名字空间、强类型枚举与别名 · 名字空间与名称查找
- 模板推导
- 初始化、类型推导与现代语法 · 模板推导规则预览
- 模板推导
- 引用、const、值类别与生命周期 · 转发引用预览
- 默认成员初始化器
- 构造、析构与对象初始化 · 默认成员初始化器
- 默认初始化
- 初始化、类型推导与现代语法 · 默认初始化与值初始化
- 默认访问
- 类、对象、访问控制与封装 · class 与 struct 的默认访问
- 默认构造
- 构造、析构与对象初始化 · 默认、普通与复制移动构造概览
- 默认构造
- 复制、移动与特殊成员函数规则 · 六个特殊成员函数总览
- 默认继承
- 类、对象、访问控制与封装 · class 与 struct 的默认访问
- 默认实参
- 函数重载、名字空间、强类型枚举与别名 · 默认实参
- 目标构造函数
- 构造、析构与对象初始化 · 委托构造函数
- 内存泄漏
- RAII、资源所有权与智能指针 · 共享环与常见陷阱
- 内联
- 从 C 进入现代 C++ · 零开销抽象的含义
- 普通构造
- 构造、析构与对象初始化 · 默认、普通与复制移动构造概览
- 迁移边界
- 从 C 进入现代 C++ · C 与 C++ 的语言边界
- 迁移清单
- 从 C 进入现代 C++ · 从 C 迁移的检查清单
- 浅复制
- 复制、移动与特殊成员函数规则 · 常见陷阱
- 强保证
- 复制、移动与特殊成员函数规则 · 复制赋值运算符
- 强类型枚举
- 函数重载、名字空间、强类型枚举与别名 · enum class 与底层类型
- 全局 using
- 函数重载、名字空间、强类型枚举与别名 · 常见陷阱
- 确定性清理
- 从 C 进入现代 C++ · 资源管理与对象生命周期
- 容器
- 从 C 进入现代 C++ · 标准库优先的默认实践
- 容器
- 复制、移动与特殊成员函数规则 · noexcept 移动与容器选择
- 深复制
- 复制、移动与特殊成员函数规则 · 复制构造函数
- 生存期
- 引用、const、值类别与生命周期 · 悬垂引用识别
- 生命周期错误
- 引用、const、值类别与生命周期 · 常见陷阱
- 生命周期结束
- 构造、析构与对象初始化 · 析构函数合同
- 生命周期延长
- 引用、const、值类别与生命周期 · 临时对象具体化与生命周期延长
- 声明
- 函数重载、名字空间、强类型枚举与别名 · 默认实参
- 声明
- 函数重载、名字空间、强类型枚举与别名 · 头文件接口与链接边界
- 声明类型
- 初始化、类型推导与现代语法 · decltype 的两套规则
- 失败合同
- 从 C 进入现代 C++ · 错误表达方式概览
- 实例
- 类、对象、访问控制与封装 · 类定义与对象
- 双重释放
- 复制、移动与特殊成员函数规则 · 常见陷阱
- 算法
- 从 C 进入现代 C++ · 标准库优先的默认实践
- 所有权不明
- 从 C 进入现代 C++ · 常见陷阱
- 所有权环
- RAII、资源所有权与智能指针 · 共享环与常见陷阱
- 所有权模型
- RAII、资源所有权与智能指针 · 独占、共享与观察所有权
- 所有权转移
- RAII、资源所有权与智能指针 · 所有权转移与接口签名
- 锁
- RAII、资源所有权与智能指针 · 非内存资源的 RAII 包装
- 特殊成员
- 构造、析构与对象初始化 · 默认、普通与复制移动构造概览
- 特殊成员
- 复制、移动与特殊成员函数规则 · 六个特殊成员函数总览
- 体内赋值
- 构造、析构与对象初始化 · 常见陷阱
- 头文件
- 函数重载、名字空间、强类型枚举与别名 · 头文件接口与链接边界
- 推导指引
- 初始化、类型推导与现代语法 · 类模板实参推导
- 完美转发
- 引用、const、值类别与生命周期 · 转发引用预览
- 完整表达式
- 引用、const、值类别与生命周期 · 临时对象具体化与生命周期延长
- 委托构造
- 构造、析构与对象初始化 · 委托构造函数
- 未初始化成员
- 构造、析构与对象初始化 · 常见陷阱
- 未定义行为
- 从 C 进入现代 C++ · 常见陷阱
- 未定义行为
- 引用、const、值类别与生命周期 · 悬垂引用识别
- 未确定值
- 初始化、类型推导与现代语法 · 默认初始化与值初始化
- 析构
- 从 C 进入现代 C++ · 资源管理与对象生命周期
- 析构函数
- 构造、析构与对象初始化 · 析构函数合同
- 析构完成
- 构造、析构与对象初始化 · 对象生命周期的开始与结束
- 析构异常
- 构造、析构与对象初始化 · 常见陷阱
- 限定名称
- 函数重载、名字空间、强类型枚举与别名 · 名字空间与名称查找
- 悬垂引用
- 初始化、类型推导与现代语法 · 常见陷阱
- 悬垂引用
- 引用、const、值类别与生命周期 · 悬垂引用识别
- 验证
- 类、对象、访问控制与封装 · 类不变量与合法状态
- 移动
- 从 C 进入现代 C++ · 值语义作为默认建模方式
- 移动
- 复制、移动与特殊成员函数规则 · 六个特殊成员函数总览
- 移动
- RAII、资源所有权与智能指针 · unique_ptr 的独占所有权
- 移动赋值
- 复制、移动与特殊成员函数规则 · 移动赋值运算符
- 移动构造
- 复制、移动与特殊成员函数规则 · 移动构造函数
- 移动构造
- 复制、移动与特殊成员函数规则 · noexcept 移动与容器选择
- 移动后误用
- 复制、移动与特殊成员函数规则 · 常见陷阱
- 移动后状态
- 引用、const、值类别与生命周期 · 常见陷阱
- 移动语义
- 引用、const、值类别与生命周期 · std::move 只是转换
- 异常
- 从 C 进入现代 C++ · 错误表达方式概览
- 异常安全
- 构造、析构与对象初始化 · 部分构造失败
- 异常安全
- 复制、移动与特殊成员函数规则 · copy-and-swap 与有效状态
- 异常安全
- RAII、资源所有权与智能指针 · make_unique 与 make_shared
- 异常保证
- 复制、移动与特殊成员函数规则 · noexcept 移动与容器选择
- 抑制
- 复制、移动与特殊成员函数规则 · 隐式生成、抑制与删除
- 意外推导
- 初始化、类型推导与现代语法 · 常见陷阱
- 引用
- 引用、const、值类别与生命周期 · 指针与引用的接口选择
- 引用保留
- 初始化、类型推导与现代语法 · decltype(auto) 与返回类型
- 引用计数
- RAII、资源所有权与智能指针 · shared_ptr 的共享所有权
- 引用失效
- 引用、const、值类别与生命周期 · 常见陷阱
- 引用推导
- 初始化、类型推导与现代语法 · 模板推导规则预览
- 引用折叠
- 引用、const、值类别与生命周期 · 转发引用预览
- 隐式对象
- 类、对象、访问控制与封装 · 成员函数与 this
- 隐式生成
- 复制、移动与特殊成员函数规则 · 隐式生成、抑制与删除
- 隐式转换
- 函数重载、名字空间、强类型枚举与别名 · 常见陷阱
- 隐式转换
- 构造、析构与对象初始化 · 转换构造与 explicit
- 优化
- 从 C 进入现代 C++ · 零开销抽象的含义
- 优先级
- 初始化、类型推导与现代语法 · initializer_list 的重载优先级
- 有效状态
- 复制、移动与特殊成员函数规则 · 移动构造函数
- 有效状态
- 复制、移动与特殊成员函数规则 · 移动赋值运算符
- 有效状态
- 复制、移动与特殊成员函数规则 · copy-and-swap 与有效状态
- 右值
- 引用、const、值类别与生命周期 · 右值引用绑定
- 右值
- 复制、移动与特殊成员函数规则 · 移动构造函数
- 右值引用
- 引用、const、值类别与生命周期 · 右值引用绑定
- 语言模式
- 从 C 进入现代 C++ · C 与 C++ 的语言边界
- 源文件
- 从 C 进入现代 C++ · 源文件、语言模式与工具链
- 窄化
- 初始化、类型推导与现代语法 · 列表初始化与窄化检查
- 窄化
- 初始化、类型推导与现代语法 · 常见陷阱
- 占位符
- 初始化、类型推导与现代语法 · 模板推导规则预览
- 占位类型
- 初始化、类型推导与现代语法 · auto 占位类型推导
- 栈展开
- 构造、析构与对象初始化 · 部分构造失败
- 诊断
- 初始化、类型推导与现代语法 · 列表初始化与窄化检查
- 诊断选项
- 从 C 进入现代 C++ · 源文件、语言模式与工具链
- 直接初始化
- 初始化、类型推导与现代语法 · 初始化形式地图
- 直接初始化
- 构造、析构与对象初始化 · 成员初始化列表
- 直接初始化
- 构造、析构与对象初始化 · 转换构造与 explicit
- 值初始化
- 初始化、类型推导与现代语法 · 默认初始化与值初始化
- 值类别
- 初始化、类型推导与现代语法 · decltype(auto) 与返回类型
- 值类别
- 引用、const、值类别与生命周期 · glvalue、prvalue、xvalue 地图
- 值语义
- 从 C 进入现代 C++ · 值语义作为默认建模方式
- 只读对象
- 类、对象、访问控制与封装 · const 成员函数
- 只读接口
- 引用、const、值类别与生命周期 · const 正确性
- 指针
- 引用、const、值类别与生命周期 · 指针与引用的接口选择
- 重绑定
- 引用、const、值类别与生命周期 · 指针与引用的接口选择
- 重载
- 初始化、类型推导与现代语法 · initializer_list 的重载优先级
- 重载
- 类、对象、访问控制与封装 · const 成员函数
- 重载集
- 函数重载、名字空间、强类型枚举与别名 · 重载集与函数签名
- 重载决议
- 函数重载、名字空间、强类型枚举与别名 · 重载决议与转换序列
- 转发引用
- 引用、const、值类别与生命周期 · 转发引用预览
- 转换构造
- 构造、析构与对象初始化 · 转换构造与 explicit
- 转换序列
- 函数重载、名字空间、强类型枚举与别名 · 重载决议与转换序列
- 状态值
- 从 C 进入现代 C++ · 错误表达方式概览
- 资源管理
- 从 C 进入现代 C++ · 资源管理与对象生命周期
- 资源获取
- RAII、资源所有权与智能指针 · RAII 的获取与释放合同
- 资源接管
- 复制、移动与特殊成员函数规则 · 移动赋值运算符
- 资源释放
- 构造、析构与对象初始化 · 析构函数合同
- 资源释放
- RAII、资源所有权与智能指针 · RAII 的获取与释放合同
- 资源释放
- RAII、资源所有权与智能指针 · 自定义删除器
- 资源所有权
- 复制、移动与特殊成员函数规则 · 规则零、三与五
- 资源替换
- 复制、移动与特殊成员函数规则 · 复制赋值运算符
- 资源转移
- 引用、const、值类别与生命周期 · 右值引用绑定
- 资源转移
- 复制、移动与特殊成员函数规则 · 移动构造函数
- 子对象
- 构造、析构与对象初始化 · 部分构造失败
- 字符串
- 从 C 进入现代 C++ · 标准库优先的默认实践
- 自定义删除器
- RAII、资源所有权与智能指针 · 自定义删除器
- 自动释放
- RAII、资源所有权与智能指针 · unique_ptr 的独占所有权
- 自赋值
- 复制、移动与特殊成员函数规则 · 复制赋值运算符
- 组合
- 类、对象、访问控制与封装 · 组合与成员对象
- 左值
- 引用、const、值类别与生命周期 · 左值引用绑定
- 左值引用
- 引用、const、值类别与生命周期 · 左值引用绑定
- 作用域
- 函数重载、名字空间、强类型枚举与别名 · 名字空间与名称查找
- 作用域
- 函数重载、名字空间、强类型枚举与别名 · using 声明与 using 指令
- 作用域枚举项
- 函数重载、名字空间、强类型枚举与别名 · enum class 与底层类型
- 作用域守卫
- RAII、资源所有权与智能指针 · 非内存资源的 RAII 包装
- access control
- 类、对象、访问控制与封装 · 访问控制与封装
- alias declaration
- 函数重载、名字空间、强类型枚举与别名 · 类型别名与别名模板
- auto
- 初始化、类型推导与现代语法 · auto 占位类型推导
- auto deduction
- 初始化、类型推导与现代语法 · auto 占位类型推导
- brace initialization
- 初始化、类型推导与现代语法 · 列表初始化与窄化检查
- C 风格习惯
- 从 C 进入现代 C++ · 常见陷阱
- C 数组
- 从 C 进入现代 C++ · 从 C 迁移的检查清单
- C 与 C++
- 从 C 进入现代 C++ · C 与 C++ 的语言边界
- C migration checklist
- 从 C 进入现代 C++ · 从 C 迁移的检查清单
- C/C++ boundary
- 从 C 进入现代 C++ · C 与 C++ 的语言边界
- C++23
- 从 C 进入现代 C++ · 源文件、语言模式与工具链
- class
- 类、对象、访问控制与封装 · class 与 struct 的默认访问
- class and object
- 类、对象、访问控制与封装 · 类定义与对象
- class invariant
- 类、对象、访问控制与封装 · 类不变量与合法状态
- class pitfalls
- 类、对象、访问控制与封装 · 常见陷阱
- class template deduction
- 初始化、类型推导与现代语法 · 类模板实参推导
- class versus struct
- 类、对象、访问控制与封装 · class 与 struct 的默认访问
- const
- 引用、const、值类别与生命周期 · const 正确性
- const 成员
- 类、对象、访问控制与封装 · const 成员函数
- const 引用
- 引用、const、值类别与生命周期 · 左值引用绑定
- const correctness
- 引用、const、值类别与生命周期 · const 正确性
- const member function
- 类、对象、访问控制与封装 · const 成员函数
- construction order
- 构造、析构与对象初始化 · 基类与成员初始化顺序
- construction pitfalls
- 构造、析构与对象初始化 · 常见陷阱
- constructor kinds
- 构造、析构与对象初始化 · 默认、普通与复制移动构造概览
- copy and swap
- 复制、移动与特殊成员函数规则 · copy-and-swap 与有效状态
- copy assignment
- 复制、移动与特殊成员函数规则 · 复制赋值运算符
- copy construction
- 复制、移动与特殊成员函数规则 · 复制构造函数
- copy-and-swap
- 复制、移动与特殊成员函数规则 · copy-and-swap 与有效状态
- copy-move pitfalls
- 复制、移动与特殊成员函数规则 · 常见陷阱
- CTAD
- 初始化、类型推导与现代语法 · 类模板实参推导
- custom deleter
- RAII、资源所有权与智能指针 · 自定义删除器
- dangling reference
- 引用、const、值类别与生命周期 · 悬垂引用识别
- decltype
- 初始化、类型推导与现代语法 · decltype 的两套规则
- decltype auto
- 初始化、类型推导与现代语法 · decltype(auto) 与返回类型
- decltype rules
- 初始化、类型推导与现代语法 · decltype 的两套规则
- decltype(auto)
- 初始化、类型推导与现代语法 · decltype(auto) 与返回类型
- deduction pitfalls
- 初始化、类型推导与现代语法 · 常见陷阱
- deduction preview
- 初始化、类型推导与现代语法 · 模板推导规则预览
- default arguments
- 函数重载、名字空间、强类型枚举与别名 · 默认实参
- default versus value init
- 初始化、类型推导与现代语法 · 默认初始化与值初始化
- delegating constructor
- 构造、析构与对象初始化 · 委托构造函数
- deleted
- 复制、移动与特殊成员函数规则 · 隐式生成、抑制与删除
- destructor contract
- 构造、析构与对象初始化 · 析构函数合同
- enum class
- 函数重载、名字空间、强类型枚举与别名 · enum class 与底层类型
- error model
- 从 C 进入现代 C++ · 错误表达方式概览
- expired
- RAII、资源所有权与智能指针 · weak_ptr 的非拥有观察
- explicit
- 构造、析构与对象初始化 · 转换构造与 explicit
- explicit constructor
- 构造、析构与对象初始化 · 转换构造与 explicit
- failed construction
- 构造、析构与对象初始化 · 部分构造失败
- forwarding reference
- 引用、const、值类别与生命周期 · 转发引用预览
- friend
- 类、对象、访问控制与封装 · friend 的受控访问边界
- friend 滥用
- 类、对象、访问控制与封装 · 常见陷阱
- friend access
- 类、对象、访问控制与封装 · friend 的受控访问边界
- glvalue
- 引用、const、值类别与生命周期 · glvalue、prvalue、xvalue 地图
- has-a
- 类、对象、访问控制与封装 · 组合与成员对象
- header interface
- 函数重载、名字空间、强类型枚举与别名 · 头文件接口与链接边界
- implicit object
- 类、对象、访问控制与封装 · 成员函数与 this
- implicit special members
- 复制、移动与特殊成员函数规则 · 隐式生成、抑制与删除
- in-class initializer
- 构造、析构与对象初始化 · 默认成员初始化器
- initialization forms
- 初始化、类型推导与现代语法 · 初始化形式地图
- initializer_list
- 初始化、类型推导与现代语法 · initializer_list 的重载优先级
- initializer-list preference
- 初始化、类型推导与现代语法 · initializer_list 的重载优先级
- inline
- 函数重载、名字空间、强类型枚举与别名 · inline 与单一定义规则
- inline static
- 类、对象、访问控制与封装 · 静态数据与静态成员函数
- interface pitfalls
- 函数重载、名字空间、强类型枚举与别名 · 常见陷阱
- language mode
- 从 C 进入现代 C++ · 源文件、语言模式与工具链
- library-first C++
- 从 C 进入现代 C++ · 标准库优先的默认实践
- lifetime management
- 从 C 进入现代 C++ · 资源管理与对象生命周期
- lock
- RAII、资源所有权与智能指针 · weak_ptr 的非拥有观察
- lvalue references
- 引用、const、值类别与生命周期 · 左值引用绑定
- make_shared
- RAII、资源所有权与智能指针 · make_unique 与 make_shared
- make_unique
- RAII、资源所有权与智能指针 · make_unique 与 make_shared
- member initializer
- 构造、析构与对象初始化 · 成员初始化列表
- migration pitfalls
- 从 C 进入现代 C++ · 常见陷阱
- move assignment
- 复制、移动与特殊成员函数规则 · 移动赋值运算符
- move cast
- 引用、const、值类别与生命周期 · std::move 只是转换
- move construction
- 复制、移动与特殊成员函数规则 · 移动构造函数
- namespace lookup
- 函数重载、名字空间、强类型枚举与别名 · 名字空间与名称查找
- noexcept
- 构造、析构与对象初始化 · 析构函数合同
- noexcept
- 复制、移动与特殊成员函数规则 · noexcept 移动与容器选择
- noexcept move
- 复制、移动与特殊成员函数规则 · noexcept 移动与容器选择
- object composition
- 类、对象、访问控制与封装 · 组合与成员对象
- object lifetime boundary
- 构造、析构与对象初始化 · 对象生命周期的开始与结束
- ODR
- 函数重载、名字空间、强类型枚举与别名 · inline 与单一定义规则
- ODR 违规
- 函数重载、名字空间、强类型枚举与别名 · 常见陷阱
- one definition rule
- 函数重载、名字空间、强类型枚举与别名 · inline 与单一定义规则
- overload resolution
- 函数重载、名字空间、强类型枚举与别名 · 重载决议与转换序列
- overload set
- 函数重载、名字空间、强类型枚举与别名 · 重载集与函数签名
- ownership model
- RAII、资源所有权与智能指针 · 独占、共享与观察所有权
- ownership transfer
- RAII、资源所有权与智能指针 · 所有权转移与接口签名
- pointer or reference
- 引用、const、值类别与生命周期 · 指针与引用的接口选择
- private
- 类、对象、访问控制与封装 · 访问控制与封装
- protected
- 类、对象、访问控制与封装 · 访问控制与封装
- prvalue
- 引用、const、值类别与生命周期 · glvalue、prvalue、xvalue 地图
- public
- 类、对象、访问控制与封装 · 访问控制与封装
- RAII
- RAII、资源所有权与智能指针 · RAII 的获取与释放合同
- RAII wrapper
- RAII、资源所有权与智能指针 · 非内存资源的 RAII 包装
- reference pitfalls
- 引用、const、值类别与生命周期 · 常见陷阱
- resource acquisition is initialization
- RAII、资源所有权与智能指针 · RAII 的获取与释放合同
- rule of zero
- 复制、移动与特殊成员函数规则 · 规则零、三与五
- rvalue references
- 引用、const、值类别与生命周期 · 右值引用绑定
- scoped enumeration
- 函数重载、名字空间、强类型枚举与别名 · enum class 与底层类型
- shared ownership
- RAII、资源所有权与智能指针 · shared_ptr 的共享所有权
- shared ownership pitfalls
- RAII、资源所有权与智能指针 · 共享环与常见陷阱
- shared_ptr
- RAII、资源所有权与智能指针 · shared_ptr 的共享所有权
- shared_ptr
- RAII、资源所有权与智能指针 · 自定义删除器
- smart pointer factories
- RAII、资源所有权与智能指针 · make_unique 与 make_shared
- special members
- 复制、移动与特殊成员函数规则 · 六个特殊成员函数总览
- static class member
- 类、对象、访问控制与封装 · 静态数据与静态成员函数
- std::move
- 引用、const、值类别与生命周期 · std::move 只是转换
- struct
- 类、对象、访问控制与封装 · class 与 struct 的默认访问
- swap
- 复制、移动与特殊成员函数规则 · copy-and-swap 与有效状态
- temporary lifetime
- 引用、const、值类别与生命周期 · 临时对象具体化与生命周期延长
- this
- 类、对象、访问控制与封装 · 成员函数与 this
- type-safe abstraction
- 从 C 进入现代 C++ · 类型安全与抽象边界
- unique ownership
- RAII、资源所有权与智能指针 · unique_ptr 的独占所有权
- unique_ptr
- RAII、资源所有权与智能指针 · unique_ptr 的独占所有权
- unique_ptr
- RAII、资源所有权与智能指针 · 自定义删除器
- using
- 函数重载、名字空间、强类型枚举与别名 · 类型别名与别名模板
- using 声明
- 函数重载、名字空间、强类型枚举与别名 · using 声明与 using 指令
- using 指令
- 函数重载、名字空间、强类型枚举与别名 · using 声明与 using 指令
- using forms
- 函数重载、名字空间、强类型枚举与别名 · using 声明与 using 指令
- value categories
- 引用、const、值类别与生命周期 · glvalue、prvalue、xvalue 地图
- value semantics
- 从 C 进入现代 C++ · 值语义作为默认建模方式
- weak observation
- RAII、资源所有权与智能指针 · weak_ptr 的非拥有观察
- weak_ptr
- RAII、资源所有权与智能指针 · weak_ptr 的非拥有观察
- weak_ptr
- RAII、资源所有权与智能指针 · 共享环与常见陷阱
- xvalue
- 引用、const、值类别与生命周期 · glvalue、prvalue、xvalue 地图
- xvalue
- 引用、const、值类别与生命周期 · 右值引用绑定
- xvalue
- 引用、const、值类别与生命周期 · std::move 只是转换
- zero-overhead principle
- 从 C 进入现代 C++ · 零开销抽象的含义