结合律 | 运算符 | 功能 | 用法 |
---|---|---|---|
左 左 左 |
:: :: :: |
全局作用域 类作用域 命名空间作用域 |
::name class::name namespace::name |
左 左 左 左 左 |
. -> [] () () |
成员选择 成员选择 下标 函数调用 类型构造 |
object.member pointer->member expr[expr] name(expt_list) type(expt_list) |
右 右 右 右 右 |
++ -- typeid typeid explicit cast |
后置递增运算 后置递减运算 类型ID 运行时类型ID 类型转换 |
lvalue++ lvalue-- typeid(type) typeid(type) cast_name<type>(expr) |
右 右 右 右 右 右 右 右 右 右 右 右 右 右 右 右 右 |
++ -- ~ ! - + * & () sizeof sizeof sizeof... new new[] delete delete[] noexcept |
前置递增运算 前置递减运算 位求反 逻辑非 一元负号 一元正号 解引用 取地址 类型转换 对象的大小 类型的大小 参数包的大小 创建对象 创建数组 释放对象 释放数组 能否抛出异常 |
++lvalue --lvalue ~expr !expr -expr +expr *expr &lvalue (type)expr sizeof expr sizeof(type) sizeof...(name) new type new type[size] delete expr delete[] expr noexcept(expt) |
左 左 |
->* .* |
指向成员选择的指针 指向成员选择的指针 |
ptr->*ptr_to_member obj.*ptr_to_member |
左 左 左 |
* / % |
乘法 除法 取模(取余) |
expr * expr expr / expr expr % expr |
左 左 |
+ - |
加法 减法 |
expr + expr expr - expr |
左 左 |
<< >> |
向左移位 向右移位 |
expr << expr expr >> expr |
左 左 左 左 |
< <= > >= |
小于 小于等于 大于 大于等于 |
expr < expr expr <= expr expr > expr expr >= expr |
左 左 |
== != |
相等 不相等 |
expr == expr expr != expr |
左 | & | 位与 | expr & expr |
左 | ^ | 位异或 | expr ^ expr |
左 | | | 位或 | expr | expr |
左 | && | 逻辑与 | expr && expr |
左 | || | 逻辑或 | expr || expr |
右 | ? : | 条件 | expr ? expr : expr |
右 右 右 右 右 |
= *=, /=, %= +=, -= <<=, >>= &=, |=, ^= |
赋值 复合赋值 |
lvalue = expr lvalue += expr等 |
右 | throw | 抛出异常 | throw expr |
左 | , | 逗号 | expr, expr |