复用算术运算符重载复合赋值运算符
时间: 2023-09-22 10:12:02 浏览: 65
在C++中,可以使用运算符重载来定义复合赋值运算符。复合赋值运算符是一种特殊的运算符,它将一个算术运算符(如+、-、*、/等)与赋值运算符(=)组合在一起,用于对变量进行增量或减量赋值操作。
例如,以下代码定义了一个复合赋值运算符+=,它是通过重载算术运算符+和赋值运算符=实现的:
```
class MyInt {
public:
int val;
MyInt(int v = 0) : val(v) {}
MyInt& operator+=(const MyInt& other) {
val += other.val;
return *this;
}
};
MyInt operator+(const MyInt& a, const MyInt& b) {
MyInt res = a;
res += b;
return res;
}
int main() {
MyInt a(1), b(2), c(3);
a += b + c; // a = a + b + c
cout << a.val << endl; // 输出6
return 0;
}
```
在上面的代码中,MyInt类重载了+=运算符,并且定义了一个全局的+运算符用于计算两个MyInt对象的和。在main函数中,使用了复合赋值运算符+=对a进行了赋值操作,相当于a = a + b + c,最终输出a的值为6。
需要注意的是,重载复合赋值运算符时,必须返回一个引用类型的对象,并且需要在函数名前加上&符号。这是因为复合赋值运算符是对当前对象进行修改操作,并返回修改后的对象本身。