运算符的重载operator
重写:针对子类父类而言,函数名参数一样,但函数内容不一样;
重载:针对函数而言,同名同内容,只是参数的类型和数量不同;
operator重载
基本格式:
返回值类型 operator 运算符号(参数列表){
// TODO
}
下面举例实现了一个复数类(3i+5)
class Complex {
public:
Complex(): real(0.0), imag(0.0) {}
Complex(int a, int b): real(a), imag(b) {}
// 这里开始运算符的重载
Complex operator+(const Complex &A) const {
Complex B;
B.real = A.real + real;
B.imag = A.imag + imag;
return B;
}
void diplay() {
cout << real << "i+" << imag << endl;
}
private:
double real; // 实部
double imag; // 虚部
};
下面是operator的调用方式:
int main(){
Complex a(1.0,3.0);
Complex b(2.0,5.0);
Complex c;
c = a + b; // 写法一
c = a.operator+(b); // 写法二
c.diplay();
return 0;
}