1. 双目运算符重载
1.1格式:
L/*左操作数*/ # /*操作符*/ R/*右操作数*/ L#R => L.operator#(R) 成员形式,写在类中,成员函数形式 => operator#(L,R) 非成员形式 //需要定义为类的友元函数 如: cout << c1; => cout.operator<<(c1) => operator<<(cout,c1) 1.2实际操作形式: 类名 operator+(const 类名& 对象名) { return 类名(...,....);//构建的一个匿名对象} 类名 operator-(const 类名& 对象名) { return 类名(...,....);//构建的一个匿名对象} 类名& operator+=(const 类名& 对象名) { return *this = *this + 对象名;} 类名& operator-=(const 类名& 对象名) { return *this -= *this - 对象名;} |
2. 单目运算符的重载
2.1格式:
#/*操作符*/O/*操作数*/ =>O.operator#();//成员形式 =>operator#(O); //非成员形式 如: cout << -c1 << endl; c1.operator-();//成员函数形式 operator-(c1);//非成员函数形式 |
2.2实际操作形式:
类名 operator-(void)
{ return 类名(-...,-...);}
注意:
对于运算符重载的两种形式中,优先调用成员函数形式