企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 一.赋值运算符 + `expr1` 必须为 **左值** ,运算结果为 **左值** + 注意区分 `=` 和 `==` | 结合性 | 目数 | 运算符 | 功能 | 用法 | 可重载 | | ------ | ---- | ------ | ------ | ---------------- | ------ | | 右 | 双目 | = | 赋值 | expr1 = expr2 | √ | + \[11+\][$]使用初始值列表作为右侧运算对象。若初始值列表为空,则编译器将创建一个值初始化的临时变量并赋给左侧运算对象。 ```c++ vector<int> vi; vi = {1,2,3,4,5,6,7,8,9}; ``` ## 二.复合赋值运算符 + 将算术运算符或位运算符与赋值运算符合并后的运算符,如 `+=`。 + `expr1` 必须为 **左值** ,运算结果为 **左值** | 结合性 | 目数 | 运算符 | 功能 | 用法 | 可重载 | | ------ | ---- | ------ | ------ | ---------------- | ------ | | 右 | 双目 | += | 加法 | expr1 += expr2 | √ | | 右 | 双目 | -= | 减法 | expr1 -= expr2 | √ | | 右 | 双目 | \*= | 乘法 | expr1 \*= expr2 | √ | | 右 | 双目 | /= | 除法 | expr1 /= expr2 | √ | | 右 | 双目 | %= | 取余 | expr1 %= expr2 | √ | | 右 | 双目 | <<= | 左移位 | expr1 <<= expr2 | √ | | 右 | 双目 | >>= | 右移位 | expr1 >>= expr2 | √ | | 右 | 双目 | &= | 按位与 | expr1 &= expr2 | √ | | 右 | 双目 | \|= | 按位或 | expr1 \|= expr2 | √ | | 右 | 双目 | ^= | 按位异或 | expr1 ^= expr2 | √ | 1. 复合赋值运算符与先计算后赋值版本 `eg.expr1 = expr1 + expr2` 的区别 + **复合赋值运算符** 直接改变 `expr1` 本身 + **先计算后赋值版本** 先创建一个 **临时变量** 存储 `exp1` 与 `exp2` 计算的结果,再将 **临时变量** 赋给 `exp1` + **先计算后赋值版本** 的内存开销比 **直接复合赋值运算符** 的大。但对于基本类型,其开销可以忽略不计。