零开销原则 来自cppreference.com < cpp | language C++ 语言 标准库头文件 自立与有宿主实现 具名要求 语言支持库 概念库 (C++20) 诊断库 工具库 字符串库 容器库 迭代器库 范围库 (C++20) 算法库 数值库 本地化库 输入/输出库 文件系统库 (C++17) 正则表达式库 (C++11) 原子操作库 (C++11) 线程支持库 (C++11) 技术规范 C++ 语言 一般主题 预处理器 注释 关键词 转义序列 流程控制 条件执行语句 if switch 重复语句(循环) for 范围 for (C++11) while do-while 跳转语句 continue - break goto - return 函数 函数声明 Lambda 函数声明 inline 说明符 异常规定 (C++20 前) noexcept 说明符 (C++11) 异常 throw 表达式 try-catch 块 命名空间 命名空间声明 命名空间别名 类型 基础类型 枚举类型 函数类型 复合类型 联合体类型 说明符 decltype (C++11) auto (C++11) alignas (C++11) const/volatile constexpr (C++11) 存储期说明符 初始化 默认初始化 值初始化 零初始化 复制初始化 直接初始化 聚合初始化 列表初始化 (C++11) 常量初始化 引用初始化 表达式 值类别 求值顺序 运算符 运算符优先级 替代表示 字面量 布尔 - 整数 - 浮点 字符 - 字符串 - nullptr (C++11) 用户定义 (C++11) 工具 属性 (C++11) 类型 typedef 声明 类型别名声明 (C++11) 类型转换 隐式转换 - 显式转换 static_cast - dynamic_cast const_cast - reinterpret_cast 内存分配 new 表达式 delete 表达式 类 类声明 构造函数 this 指针 访问说明符 friend 说明符 特定于类的函数性质 虚函数 override 指定符 (C++11) final 说明符 (C++11) explicit (C++11) static 特殊成员函数 默认构造函数 复制构造函数 移动构造函数 (C++11) 复制赋值 移动赋值 (C++11) 析构函数 模板 类模板 函数模板 模板特化 参数包 (C++11) 杂项 内联汇编 C++ 的历史 零开销原则是 C++ 设计原则,所说的是: 你无需为你所不用的付出。 你所用的正与你所能合理手写的效率相同。 总而言之,这表示不应该某些特性到 C++ ,使得强加的开销不论在时间还是空间方面,会大于程序员不使用该特性而引入的。 语言中仅有的两个不遵循零开销原则的特性是运行时类型鉴别与异常,从而这是大多数编译器包含关闭它们的开关的原因。 引用 C++ 的基础 - Bjarne Stroustrup C++ 异常与代替品 - Bjarne Stroustrup 反碎片化 C++ :使异常与 RTTI 更廉价且可用 - Herb Sutter