标点
来自cppreference.com
这些是 C++ 中的标点符号。每个符号的含义在链接的页面中详述。
预处理运算符
预处理器会识别预处理运算符。
#(包括 %:)
- 引入预处理指令。
- 字符串化的预处理运算符。
##(包括 %:%:)
单字符运算符和标点符号
{ 和 }(包括 <% 和 %>)
| (C++11 起) |
|
(C++20 起) |
[ 和 ](包括 <: 和 :>)
- 下标运算符;运算符重载中
operator[]的一部分。 - 声明或类型标识(例如在
new表达式中)中数组声明符的一部分。 - 运算符重载(分配函数)中
new[]运算符的一部分。 - delete 表达式及运算符重载(解分配函数)中
delete[]运算符的一部分。
|
(C++11 起) |
|
(C++17 起) |
| (C++26 起) |
( 和 )
- 在表达式中指示分组。
- 函数调用运算符;运算符重载中
operator()的一部分。 - 在函数风格转换中分隔表达式/初始化器。
- 在
static_cast、const_cast、reinterpret_cast或dynamic_cast中分隔表达式。 - 分隔以下运算符的操作数:
| (C++11 起) |
- 在布置
new表达式中分隔布置实参。 - 在
new表达式中可选地分隔类型标识。 - 在
new表达式中分隔初始化器。 - 在 C 风格转换中分隔类型标识。
- 在声明或类型标识中指示分组。
- 在下列构造中分隔形参列表:
| (C++11 起) | |
| (C++17 起) | |
| (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 起) |
?
- 条件运算符的一部分。
.
| (C++20 起) |
~(包括 compl)
- 一元补运算符(又称逐位非运算符);运算符重载中
operator~的一部分。 - 指名析构函数或伪析构函数的标识符表达式的一部分。
!(包括 not)
|
(C++23 起) |
+
-
*
|
(C++17 起) |
/
%
^(包括 xor)
&(包括 bitand)
| (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<>的一部分。 - 指示下列构造中的头文件名:
| (C++17 起) | |
| (C++20 起) |
>
- 大于运算符;运算符重载中
operator>的一部分。 - 在
static_cast、const_cast、reinterpret_cast或dynamic_cast中指示类型标识的末尾。 - 指示模板实参列表的末尾。
- 在以下构造中指示模板形参列表的末尾
| (C++20 起) |
- 模板特化声明中
template<>的一部分。 - 指示下列构造中头文件名的末尾:
| (C++17 起) | |
| (C++20 起) |
,
| (C++11 起) | |
| (C++17 起) | |
|
(C++23 起) |
|
(C++11 起) |
多字符运算符和标点符号
...
| (C++11 起) | |
|
(C++26 起) |
::
- 下列构造中的作用域解析运算符:
|
(C++11 起) |
|
(C++17 起) |
.*
->
|
(C++11 起) |
|
(C++17 起) |
|
(C++20 起) |
->*
+=
-=
*=
/=
%=
^=(包括 xor_eq)
&=(包括 and_eq)
|=(包括 or_eq)
==
!=(包括 not_eq)
<=
>=
|
(C++20 起) |
&&(包括 and)
||(包括 or)
<<
>>
<<=
>>=
++
--
引用
- C++23 标准(ISO/IEC 14882:2024):
- 5.12 Operators and punctuators [lex.operators]
- C++20 标准(ISO/IEC 14882:2020):
- 5.12 Operators and punctuators [lex.operators]
- C++17 标准(ISO/IEC 14882:2017):
- 5.12 Operators and punctuators [lex.operators]
- C++14 标准(ISO/IEC 14882:2014):
- 2.13 Operators and punctuators [lex.operators]
- C++11 标准(ISO/IEC 14882:2011):
- 2.13 Operators and punctuators [lex.operators]
- C++03 标准(ISO/IEC 14882:2003):
- 2.12 Operators and punctuators [lex.operators]
- C++98 标准(ISO/IEC 14882:1998):
- 2.12 Operators and punctuators [lex.operators]
参阅
| 代用表示 | 某些运算符的代用拼写 |
标点的 C 文档
| |