| if | else | switch | case | break | ||
| return | continue | for | do while | goto | ||
| try | catch | throw | ||||
| default |
| |||||
| bool | char | int | short | long | long long | |||||||||||||||
| float | double | void | char8_t (C++20) | wchar_t | nullptr | |||||||||||||||
| struct | union | char16_t (C++11) | char32_t (C++20) | |||||||||||||||||
| auto |
| |||||||||||||||||||
| class |
| |||||||||||||||||||
| emun | enum (C++11 前) enum、enum class 或 enum struct 之一 (C++11 起) | |||||||||||||||||||
| signed | unsigned |
| const | static | extern |
| typedef | ||||||
| 查询类型的信息。用于必须知晓多态对象的动态类型的场合以及静态类型鉴别。 | ||||||
| const_cast | dynamic_cast | reinterpret_cast | static_cast |
| sizeof |
| new | ||||||||
| delete |
| |||||||
| static | 用于指示局部变量的存储在程序执行期间保持不变。 | ||||
| register | 用于提示编译器将变量存储在寄存器中。
| ||||
| mutable | 1、用于修饰类的成员变量,允许其在常量对象中被修改。 2、从按复制捕获的形参中移除的 const 限定性的 lambda 声明符 (C++11 起) | ||||
| volatile | 用于指示变量可能被其他程序或硬件修改。 |
| asm | 用于嵌入汇编代码。 |
| export |
| and | 用作 && 的替代写法 | |
| and_eq | 用作 &= 的替代写法 | |
| bitand | 用作 & 的替代写法 | |
| bitor | 用作 |的代替写法 | |
| compl |
| |
| noexcept | noexcept 运算符进行编译时检查,如果表达式不会抛出任何异常则返回 true。 | |
| not | 用作 ! 的替代写法 | |
| not_eq | 用作 != 的替代写法 | |
| or_eq | 用作 |= 的替代写法 | |
| or | 用作 || 的替代写法 | |
| xor | 作为 ^ 的替代写法 | |
| xor_eq | 用作 ^= 的替代写法 |
| class | 用于定义一个类。 |
| this | 指向当前对象的指针。 |
| friend | 允许函数或类访问其他类的私有成员。 |
| private | 设置类的私有访问权限。 |
| protected | 设置类的保护访问权限。 |
| public | 设置类的公共访问权限。 |
| virtual | 用于声明虚函数,允许在派生类中重写这些函数。 |
| explicit | 用于声明类的构造函数为显式构造函数,防止隐式类型转换。 |
| operator | 用于定义类的运算符重载函数。 |
| template | 用于声明一个模板类或模板函数。 |
| typename | 用于在模板中声明类型参数。 |
| namespace | namespace |
| using | 用于引入命名空间中特定的标识符。 |
| alignas(C++11) | 用于指定变量或类型的对齐方式。 |
| alignof(C++11) | 返回类型或变量的对齐要求。 |
| override | 用于覆盖基类中的虚函数。 |
| final | 用于禁止派生类继续派生。 |
| nullptr | 用于表示空指针。 |
| true | 表示布尔类型的真值。 |
| false | 表示布尔类型的假值。 |
| consteval(C++20) | 指定函数是立即函数(immediate function),即每次调用该函数必须产生编译时常量。 |
| constexpr | 指定变量或函数的值可以在常量表达式中出现 |
| constinit | 断言变量拥有静态初始化,即零初始化与常量初始化,否则程序非良构 |
| decltype | 检查实体的声明类型,或表达式的类型和值类别。 |
| explicit | 指定构造函数或转换函数 (C++11 起)或推导指引 (C++17 起)为显式,即它不能用于隐式转换和复制初始化。 explicit 说明符可以与常量表达式一同使用。函数在且只会在该常量表达式求值为 true 时是显式的。(C++20 起) explicit 说明符只能在类定义之内的构造函数或转换函数 (C++11 起)的 声明说明符序列中出现 |
| inline | 1、inline 说明符,在用于函数的 声明说明符序列 时,将函数声明为一个 内联(inline)函数。 2、在命名空间块内声明的符号被放入一个具名的作用域中,避免这些符号被误认为其他作用域中的同名符号。 3、多个命名空间块的名字可以相同。这些块中的所有声明在该具名作用域声明。 |
| reflexpr | 获取类类型的成员列表,或者枚举类型的枚举列表 获得类型或成员的名称 检测成员是否是静态的,亦可以获取成员是否是一个常量表达式 检测成员函数是否为虚, 以及其访问级别是 public、 protected 还是 private. 获取类型定义时在源代码中的的行号或者列号 |
| import (C++20) | |
| module (C++20) | 模块声明:声明当前翻译单元是 模块单元 。 开始模块单元的 全局模块片段 。 开始模块单元的 私有模块片段 。(C++20 起) |
线程相关关键字
| atomic_cancel (TM TS) | |
| atomic_commit (TM TS) | |
| atomic_noexcept (TM TS) | |
| synchronized (TM TS) | |
| thread_local (C++11) | |
| transaction_safe | |
| transaction_safe_dynamic |
预处理器
| #if | 表达式 是常量表达式。检查标识符是否被定义为宏名。 |
| #ifdef | |
| #ifndef | |
| #elif | 表达式 是常量表达式。检查标识符是否被定义为宏名。 |
| #elifdef | |
| #elifndef | |
| #else | |
| #endif | |
| #define | 指令将标识符 定义为宏(macro),即指示编译器以将在它之后出现的所有标识符 都替换为替换列表,而它也可以被进一步处理。如果该标识符已被定义为任何类型的宏,那么除非这些定义都相同,否则程序非良构。 |
| #undef | #undef 指令取消定义标识符,即取消 #define 指令所作的标识符 定义。如果标识符未关联到宏,那么忽略该指令。 |
| #include | |
| #line | |
| #error | 1) 实现在遇到 #error 指令后,显示消息 诊断消息 ,并令程序非良构(停止编译)。 2) 同 (1) ,除了不影响程序的合法性并且编译继续。 |
| #warning | |