零开销原则
来自cppreference.com
C++ 语言
| 一般主题 | |||||||||||
| 流程控制 | |||||||||||
| 条件执行语句 | |||||||||||
| 重复语句(循环) | |||||||||||
| 跳转语句 | |||||||||||
| 函数 | |||||||||||
| 函数声明 | |||||||||||
| Lambda 函数声明 | |||||||||||
inline
说明符
|
|||||||||||
| 动态异常说明 (C++20 前) | |||||||||||
noexcept
说明符
(C++11)
|
|||||||||||
| 异常 | |||||||||||
| 命名空间 | |||||||||||
| 类型 | |||||||||||
| 说明符 | |||||||||||
|
|||||||||||
| 存储期说明符 | |||||||||||
| 初始化 | |||||||||||
| 表达式 | ||||||||||||||||
| 替代表示 | ||||||||||||||||
| 字面量 | ||||||||||||||||
| 布尔 - 整数 - 浮点 | ||||||||||||||||
| 字符 - 字符串 - nullptr (C++11) | ||||||||||||||||
| 用户定义 (C++11) | ||||||||||||||||
| 工具 | ||||||||||||||||
| 属性 (C++11) | ||||||||||||||||
| 类型 | ||||||||||||||||
typedef
声明
|
||||||||||||||||
| 类型别名声明 (C++11) | ||||||||||||||||
| 类型转换 | ||||||||||||||||
| 隐式转换 - 显式转换 | ||||||||||||||||
| static_cast - dynamic_cast | ||||||||||||||||
| const_cast - reinterpret_cast | ||||||||||||||||
| 内存分配 | ||||||||||||||||
| 类 | ||||||||||||||||
| 特定于类的函数性质 | ||||||||||||||||
|
||||||||||||||||
| 特殊成员函数 | ||||||||||||||||
| 模板 | ||||||||||||||||
| 杂项 | ||||||||||||||||
零开销原则是一个 C++ 设计原则,所说的是:
- 你不需要为你没有用到的(特性)付出。
- 你所用的正与你所能合理手写的效率相同。
总而言之,这表示某特性引发的开销如果,不论在时间还是空间方面,会大于程序员自己实现该特性产生的开销,那么该特性不应该添加到 C++。
语言中仅有的两个不遵循零开销原则的特性是运行时类型鉴别与异常,因此大多数编译器提供关闭它们的开关。