# C++ 关键词

< cpp

这是 C++ 中的保留字列表。因为它们为语言所用，故这些关键词不可用于重定义或重载。

`alignas` (C++11 起) `alignof` (C++11 起) `and` `and_eq` `asm` `atomic_cancel` (TM TS) `atomic_commit` (TM TS) `atomic_noexcept` (TM TS) `auto`(1) `bitand` `bitor` `bool` `break` `case` `catch` `char` `char8_t` (C++20 起) `char16_t` (C++11 起) `char32_t` (C++11 起) `class`(1) `compl` `concept` (C++20 起) `const` `consteval` (C++20 起) `constexpr` (C++11 起) `constinit` (C++20 起) `const_cast` `continue` `co_await` (C++20 起) `co_return` (C++20 起) `co_yield` (C++20 起) `decltype` (C++11 起) | `default`(1) `delete`(1) `do` `double` `dynamic_cast` `else` `enum` `explicit` `export`(1)(3) `extern`(1) `false` `float` `for` `friend` `goto` `if` `inline`(1) `int` `long` `mutable`(1) `namespace` `new` `noexcept` (C++11 起) `not` `not_eq` `nullptr` (C++11 起) `operator` `or` `or_eq` `private` `protected` `public` `reflexpr` (反射 TS) | `register`(2) `reinterpret_cast` `requires` (C++20 起) `return` `short` `signed` `sizeof`(1) `static` `static_assert` (C++11 起) `static_cast` `struct`(1) `switch` `synchronized` (TM TS) `template` `this` `thread_local` (C++11 起) `throw` `true` `try` `typedef` `typeid` `typename` `union` `unsigned` `using`(1) `virtual` `void` `volatile` `wchar_t` `while` `xor` `xor_eq`

- (1) - C++11 中含义改变或添加新含义。
- (2) - C++17 中含义改变。
- (3) - C++20 中含义改变。

注意 `and`、`bitor`、`or`、`xor`、`compl`、`bitand`、`and_eq`、`or_eq`、`xor_eq`、`not` 及 `not_eq`（还有双标符 `<%`、`%>`、`<:`、`:>`、`%:` 及 `%:%:`）提供标准记号的代用表示方法。

除了关键词外，还有拥有特殊含义的标识符，它们可用作对象或函数的名字，但在某些语境拥有特殊含义。

`override` (C++11) `final` (C++11) `import` (C++20) `module` (C++20) `transaction_safe` (TM TS) `transaction_safe_dynamic` (TM TS)

还有，在任何位置含双下划线 __ 的所有标识符，和以一个下划线后随一个大写字母开始的所有标识符，都始终受保留，而所有以单下划线开始的标识符，保留用作全局命名空间中的名称。更多细节见标识符。

命名空间 `std` 用于放置标准 C++ 库中的名称。关于向它添加名称的规则，见扩充命名空间 std 。

名称 `posix` 保留作为未来的顶级命名空间。若程序于该命名空间声明或定义任何内容，则行为未定义。 | (C++11 起)

预处理器在预处理指令的语境中识别下列记号：

`if` `elif` `else` `endif` | `ifdef` `ifndef` `define` `undef` | `include` `line` `error` `pragma` | `defined` `__has_include` (C++17 起) `__has_cpp_attribute` (C++20 起) | `export` (C++20) `import` (C++20) `module` (C++20)

预处理器在预处理指令的语境之外识别下列记号：

`_Pragma`(C++11 起)

### 参阅