C++ 关键词

来自cppreference.com
< cpp


 
 
 
 

这是 C++ 中的保留关键词的列表。因为它们用于语言本身,所以这些关键词不能用于重定义或重载。有一点例外是,它们在属性中(排除属性实参列表)并不被保留。(C++11 起)

A – CD – PR – 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
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 文档
close