命名空间
变体
操作

C++ 关键字

来自 cppreference.cn
< cpp
 
 
C++ 语言
 
 

这是 C++ 中的保留关键字列表。由于它们被语言使用,这些关键字不能被重新定义或重载。作为例外,它们在属性中不被视为保留(不包括属性参数列表)。(C++11 起)

A – C D – P R – Z

alignas (C++11)
alignof (C++11)

and_eq
asm
atomic_cancel (TM TS)
atomic_commit (TM TS)
atomic_noexcept (TM TS)
auto (1) (3) (4) (5)
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) (5)
constexpr (C++11) (3)
constinit (C++20)
const_cast
continue
contract_assert (C++26)
co_await (C++20)
co_return (C++20)
co_yield (C++20)

decltype (C++11) (2)
default (1)
delete (1)
do
double
dynamic_cast
else
enum (1)
explicit
export (1) (4)
extern (1)
false
float
for (1)
friend
goto
if (3) (5)
inline (1) (3)
int (1)
long
mutable (1)
namespace
new
noexcept (C++11)
not
not_eq
nullptr (C++11)
operator (1)
or
or_eq
private (4)
protected
public

reflexpr (反射 TS)
register (3)
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 (5)
thread_local (C++11)
throw (3) (4)
true
try
typedef
typeid
typename (3) (4)
union
unsigned
using (1) (4)
virtual
void
volatile
wchar_t
while
xor
xor_eq

  • (1) — C++11 中含义改变或添加新含义。
  • (2) — C++14 中添加新含义。
  • (3) — C++17 中含义改变或添加新含义。
  • (4) — C++20 中含义改变或添加新含义。
  • (5) — C++23 中添加新含义。

请注意:andbitororxorcomplbitandand_eqor_eqxor_eqnotnot_eq (以及双字符:<%%><::>%:%:%: 和三字符:??<??>??(??)??=??/??'??!??-(C++17 前)) 提供了表示标准标记的替代方式这些关键字在属性中(不包括属性参数列表)也被视为保留,但某些实现将其与其他关键字相同对待。(C++11 起)

除了关键字,还有*具有特殊含义的标识符*,它们可以用作对象或函数的名称,但在某些上下文中具有特殊含义。

final (C++11)
override (C++11)
transaction_safe (TM TS)
transaction_safe_dynamic (TM TS)
import (C++20)
module (C++20)
pre (C++26)
post (C++26)
trivially_relocatable_if_eligible (C++26)
replaceable_if_eligible (C++26)

此外,所有包含双下划线 __ 的标识符,以及以下划线开头后跟大写字母的标识符,总是被保留。所有以下划线开头的标识符都被保留,用于全局命名空间中的名称。更多详细信息请参阅标识符

命名空间 std 用于放置标准 C++ 库的名称。有关向其添加名称的规则,请参阅扩展命名空间 std

名称 posix 保留用于将来的顶级命名空间。如果程序在该命名空间中声明或定义任何内容,则行为未定义。

(C++11 起)

以下标记在预处理指令的上下文中被预处理器识别

if
elif
else
endif

ifdef
ifndef
elifdef (C++23)
elifndef (C++23)
define
undef

include
embed (C++26)
line

error
warning (C++23)
pragma

defined
__has_include (C++17)
__has_cpp_attribute (C++20)
__has_embed (C++26)

export (C++20)
import (C++20)
module (C++20)

以下标记在预处理指令*之外*的上下文中被预处理器识别

_Pragma (C++11)

[编辑] 另请参阅

C 文档,了解C 关键字