标点符号
来自 cppreference.com
这些是 C++ 中的标点符号。每个符号的含义在链接的页面中详细说明。
目录 |
[编辑] 预处理运算符
预处理运算符由 预处理器 识别。
[编辑] # (包括 %:)
- 引入 预处理指令.
- 用于 字符串化的预处理运算符.
[编辑] ##(包括 %:%:)
- 用于 令牌粘贴的预处理运算符.
[编辑] 单字符运算符和标点符号
[编辑] { 和 } (包括 <% 和 %>)
|
(自 C++11 起) |
|
(自 C++20 起) |
[编辑] [ 和 ] (包括 <: 和 :>)
- 下标运算符;构成 operator[] 的一部分,用于 运算符重载。
- 构成 数组声明符 的一部分,用于 声明 或 类型标识符(例如,在 new 表达式 中)。
- 构成 new[] 运算符的一部分,用于 运算符重载(分配函数)。
- 构成 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 起) |
[edit] ,
(自 C++11 起) | |
(自 C++17 起) | |
|
(自 C++23 起) |
|
(自 C++11 起) |
[edit] 多字符运算符和分隔符
[edit] ...
(自 C++11 起) | |
|
(自 C++26 起) |
[edit] ::
- 作用域解析运算符,用于:
|
(自 C++11 起) |
|
(自 C++17 起) |
[edit] .*
[edit] ->
(自 C++11 起) | |
|
(自 C++17 起) |
|
(自 C++20 起) |
[edit] ->*
- 指向成员的访问运算符;是operator->*的一部分,在运算符重载中。
[edit] +=
[edit] -=
[edit] *=
[edit] /=
[edit] %=
[edit] ^= (包括 xor_eq)
[edit] &= (包括 and_eq)
[edit] |= (包括 or_eq)
[edit] ==
[edit] != (包括 not_eq)
[edit] <=
[edit] >=
<=>
|
(自 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 文档 中的 标点符号
|