- 可以重载为普通函数,也可以重载为成员函数
把运算符的操作数转换成运算符函数的参数
返回值类型 operator 运算符(形参表) { ... }
class Complex {
public:
double real, image;
Complex(double r = 0.0, double i = 0.0):real(r),image(i) {}
Complex operator+(const Complex & a, const Complex & b) {
return Complex(a.real + b.real, a.image + b.image); // 返回一个临时对象
}
Complex Comlpex::operator-(const Complex & c) {
return Complex(real - c.real, imgae - c.image);
}
}
重载为成员函数时,参数个数是运算符的目数减一
- 重载为普通函数时,参数个数是运算符的目数
- 考虑如下代码:
main() {
Complex a(4,4), b(1,1), c;
c = a + b; // 等价于 c = operator+(a,b)
cout << (a-b).real << endl; // 等价于 a.operator-(b)
}