命名空间
变体
操作

C++ 关键字

来自 cppreference.com
< cpp
 
 
C++ 语言
一般主题
关键字
转义序列
流程控制
条件执行语句
if
迭代语句(循环)
for
范围-for (C++11)
跳转语句
函数
函数声明
Lambda 函数表达式
inline 指定符
动态异常规范 (直到 C++17*)
noexcept 指定符 (C++11)
异常
命名空间
类型
指定符
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
存储持续时间指定符
初始化
 
 

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

A – C D – P R – Z

alignas (C++11)
alignof (C++11)
and
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
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 (reflection 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)

此外,所有 标识符 只要在任何位置包含双下划线 __,以及所有以下划线后跟大写字母开头的标识符,都是始终保留的;所有以下划线开头的标识符在全局命名空间中被保留为名称。有关更多详细信息,请参阅 标识符

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

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

(自 C++11 起)

以下标记在 预处理器 中被识别,前提是在预处理指令的上下文中。

if
elif
else
endif

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

define
undef
include
line

error
warning (C++23)
pragma

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

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

以下标记在 预处理器 中被识别,前提是不在预处理指令的上下文中。

_Pragma (C++11)

[edit] 另请参阅

C 文档 用于 C 关键字