• 可以重载为普通函数,也可以重载为成员函数
    • 把运算符的操作数转换成运算符函数的参数

      1. 返回值类型 operator 运算符(形参表) { ... }
      1. class Complex {
      2. public:
      3. double real, image;
      4. Complex(double r = 0.0, double i = 0.0):real(r),image(i) {}
      5. Complex operator+(const Complex & a, const Complex & b) {
      6. return Complex(a.real + b.real, a.image + b.image); // 返回一个临时对象
      7. }
      8. Complex Comlpex::operator-(const Complex & c) {
      9. return Complex(real - c.real, imgae - c.image);
      10. }
      11. }
    • 重载为成员函数时,参数个数是运算符的目数减一

    • 重载为普通函数时,参数个数是运算符的目数
    • 考虑如下代码:
      1. main() {
      2. Complex a(4,4), b(1,1), c;
      3. c = a + b; // 等价于 c = operator+(a,b)
      4. cout << (a-b).real << endl; // 等价于 a.operator-(b)
      5. }