C++ 关键词

来自cppreference.com
< cpp


 
 
C++ 语言
 
 

这是 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 (反射 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)

参阅