Punctuation
From cppreference.net
以下是 C++ 中的标点符号。每个符号的具体含义详见链接页面。
目录
|
预处理运算符
预处理运算符由 预处理器 识别。
# (包括 % : )
- 引入一个 预处理指令 。
- 字符串化预处理运算符 。
## (包括 % : % : )
单字符运算符与标点符
{ 和 } (包括 < % 与 % > )
|
(自 C++11 起) |
|
(C++20 起) |
[ 和 ] (包括 < : 与 : > )
- 下标运算符 ;属于 运算符重载 中 operator [ ] 的组成部分。
- 在 声明 或 类型标识 中(例如在 new 表达式 中),作为 数组声明符 的组成部分。
- 在 运算符重载(分配函数) 中,作为 new [ ] 运算符的组成部分。
- 在 delete 表达式 和 运算符重载(释放函数) 中,作为 delete [ ] 运算符的组成部分。
| (since C++11) | |
|
(since C++17) |
| (since C++26) |
( 和 )
- 在表达式中, 表示分组 。
- 函数调用运算符 ;在 运算符重载 中构成 operator ( ) 的一部分。
- 在 函数式类型转换 中,界定表达式/初始化器。
-
在
static_cast、const_cast、reinterpret_cast或dynamic_cast中,界定表达式。 - 界定以下运算符的操作数:
| (自 C++11 起) |
- 在 placement new 表达式 中,界定放置参数。
- 在 new 表达式 中,可选地界定类型标识符。
- 在 new 表达式 中,界定初始化器。
- 在 C风格强制转换 中,界定类型标识符。
- 在 声明 或 类型标识符 中,表示分组。
- 界定
|
(since C++11) |
|
(since C++17) |
|
(since C++20) |
| (C++11 起) |
- 在 异常处理程序 中,分隔参数声明。
- 在 函数式宏定义 中,分隔宏参数。
- 在 函数式宏调用 中,分隔宏实参或防止逗号被解释为参数分隔符。
-
作为
defined、__has_include(C++17 起) 、__has_cpp_attribute(C++20 起) 预处理运算符的组成部分。
|
(C++11 起) | ||
|
(C++14 起) | ||
|
(C++17 起) | ||
|
(C++20 起) |
;
- 表示结束
| (自 C++20 起) |
- 将 for 语句 的 条件 与 语句体 分开。
:
- 条件运算符 的组成部分。
- 标签声明 的组成部分。
- 在 类定义 的 基类子句 中,引入 基类 。
- 成员声明中 访问说明符 的组成部分。
- 在 位域成员声明 中,指定位域宽度。
- 在 构造函数 定义中,引入成员初始化列表。
| (自 C++11 起) | |
|
(自 C++17 起) |
| (自 C++20 起) |
?
- 作为 条件运算符 的一部分。
.
- 成员访问运算符 。
|
(since C++20) |
~ (包括 compl )
- 一元补码运算符(又称按位取反运算符) ;属于 运算符重载 中 operator~ 的组成部分。
- 作为 标识符表达式 的组成部分,用于命名 析构函数 或伪析构函数。
! (包括 not )
|
(since C++23) |
+
-
*
- 间接操作符 ;在 运算符重载 中属于 operator * 的组成部分。
- 乘法运算符 ;在 运算符重载 中属于 operator * 的组成部分。
- 在 声明符 或 类型标识 中作为指针运算符或成员指针运算符的组成部分。
|
(since C++17) |
/
%
^ (包括 xor )
& (包含 bitand )
| (since C++11) |
| (包括 bitor )
=
- 简单赋值运算符 ;属于 运算符重载 中的 operator = ,可能是特殊成员函数( 复制赋值运算符 或 移动赋值运算符 (自 C++11 起) )。
- 构成 复制初始化 与 聚合初始化 (C++11 前) 复制列表初始化 (自 C++11 起) 语法中 初始化器 的一部分。
- 在 函数声明 中引入 默认实参 。
- 在 模板形参列表 中引入 默认模板实参 。
- 在 命名空间别名定义 中分隔别名与被别名化的命名空间。
- 在 枚举定义 中引入枚举项的值。
- 构成 纯虚函数声明 中 纯说明符 的一部分。
| (C++11 起) | |
|
(C++20 起) |
<
- 小于运算符 ;属于 运算符重载 中的 operator < 。
-
在
static_cast、const_cast、reinterpret_cast或dynamic_cast中引入类型标识。 - 引入 模板实参列表 。
- 引入 模板形参列表 于
|
(自 C++20 起) |
- 作为 模板特化声明 中 template <> 的一部分。
- 引入头文件名称
-
- 一条 #include 指令
| (since C++17) | |
|
(since C++20) |
>
- 大于运算符 ;属于 运算符重载 中 operator > 的组成部分。
-
static_cast、const_cast、reinterpret_cast或dynamic_cast,用于指示类型标识的结束。 - 指示 模板实参列表 的结束。
- 指示 模板形参列表 的结束。
|
(自 C++20 起) |
- 作为 模板特化声明 中 template <> 的一部分。
- 在头文件名结尾处标识结束
-
- 一条 #include 指令
| (since C++17) | |
|
(since C++20) |
,
| (since C++11) | |
| (since C++17) | |
|
(since C++23) |
|
(自 C++11 起) |
多字符运算符与标点符
...
| (C++11 起) | |
|
(C++26 起) |
::
- 作用域解析运算符在
|
(since C++11) |
|
(since C++17) |
. *
- >
| (since C++11) | |
|
(since C++17) |
|
(since C++20) |
- > *
+ =
- =
* =
/ =
% =
^ = (包括 xor_eq )
& = (包含 and_eq )
| = (包含 or_eq )
==
! = (包括 not_eq )
<=
>=
<=> |
(自 C++20 起) |
&& (包括 and )
|
(since C++11) |
|| (包含 or )
<<
>>
<<=
>>=
++
--
参考文献
- C++23 标准 (ISO/IEC 14882:2024):
-
- 5.12 运算符与标点符 [lex.operators]
- C++20 标准 (ISO/IEC 14882:2020):
-
- 5.12 运算符与标点符号 [lex.operators]
- C++17 标准 (ISO/IEC 14882:2017):
-
- 5.12 运算符与标点符号 [lex.operators]
- C++14 标准 (ISO/IEC 14882:2014):
-
- 2.13 运算符与标点符号 [lex.operators]
- C++11 标准 (ISO/IEC 14882:2011):
-
- 2.13 运算符与标点符号 [lex.operators]
- C++03 标准 (ISO/IEC 14882:2003):
-
- 2.12 运算符与标点符号 [lex.operators]
- C++98 标准 (ISO/IEC 14882:1998):
-
- 2.12 运算符与标点符号 [lex.operators]
参见
| 替代表示法 | 特定运算符的替代拼写 |
|
C 文档
关于
标点符号
|
|