标点
来自 cppreference.cn
这些是 C++ 中的标点符号。每个符号的含义在链接的页面中详细说明。
目录 |
[编辑] 预处理运算符
预处理运算符由预处理器识别。
[编辑] # (包括 %:)
- 引入预处理指令。
- 字符串化预处理运算符。
[编辑] ##(包括 %:%:)
[编辑] 单字符运算符和标点符号
[编辑] { 和 } (包括 <% 和 %>)
(C++11 起) |
|
(C++20 起) |
[编辑] [ 和 ] (包括 <: 和 :>)
- 下标运算符;运算符重载中 operator[] 的一部分。
- 在声明或类型 ID (例如在new 表达式中) 中,作为数组声明符的一部分。
- 在运算符重载(分配函数)中,作为 new[] 运算符的一部分。
- 在delete 表达式和运算符重载(解除分配函数)中,作为 delete[] 运算符的一部分。
|
(C++11 起) |
|
(C++17 起) |
(C++26 起) |
[编辑] ( 和 )
- 在表达式中,表示分组。
- 函数调用运算符;运算符重载中 operator() 的一部分。
- 在函数式类型转换中,分隔表达式/初始化器。
- 在
static_cast
、const_cast
、reinterpret_cast
或dynamic_cast
中,分隔表达式。 - 分隔以下运算符的操作数
(C++11 起) |
- 在定位 new 表达式中,分隔定位参数。
- 在new 表达式中,可选地分隔类型 ID。
- 在new 表达式中,分隔初始化器。
- 在C 风格转换中,分隔类型 ID。
- 在声明或类型 ID中,表示分组。
- 分隔以下内容中的参数列表
(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
中,引入类型 ID。 - 引入模板参数列表。
- 在以下内容中引入模板形参列表
(C++20 起) |
- 在模板特化声明中,作为 template<> 的一部分。
- 在以下内容中引入头文件名称
(C++17 起) | |
(C++20 起) |
[编辑] >
- 大于运算符;运算符重载中 operator> 的一部分。
-
static_cast
、const_cast
、reinterpret_cast
或dynamic_cast
,表示类型 ID 的结束。 - 表示模板实参列表的结束。
- 表示模板形参列表的结束
(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 起) |
[编辑] ->*
- 指向成员的指针访问运算符;运算符重载中 operator->* 的一部分。
[编辑] +=
[编辑] -=
[编辑] *=
[编辑] /=
[编辑] %=
[编辑] ^= (包括 xor_eq)
[编辑] &= (包括 and_eq)
[编辑] |= (包括 or_eq)
[编辑] ==
[编辑] != (包括 not_eq)
[编辑] <=
[编辑] >=
<=>
|
(C++20 起) |
[编辑] && (包括 and)
(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 文档中的 标点符号
|