双目运算符重载

时间:2021-09-29 02:13:44
#include <iostream.h>

class complex{
public:
complex(double r=0.0,double i=0.0){
real=r;
imag=i;
}
complex operator +(complex c2); //运算符+重载为成员函数
complex operator -(complex c2); //运算符-重载为成员函数
void display();

private:
double real;
double imag;
};

complex complex::operator +(complex c2){ //重载运算符函数实现
return complex(real+c2.real,imag+c2.imag); //创建一个临时无名对象作为返回值
}
complex complex::operator -(complex c2){ //重载运算符函数实现
return complex(real-c2.real,imag-c2.imag); //创建一个临时无名对象作为返回值
}
void complex::display(){
cout<<"("<<real<<","<<imag<<")"<<endl;
}
int main(){
complex c1(5,4),c2(2,10),c3;
cout<<"c1=";
c1.display();
cout<<"c2=";
c2.display();
c3=c1-c2;
cout<<"c3=c1-c2="; //使用重载运算符完成复数减法
c3.display();
c3=c1+c2;
cout<<"c3=c1+c2="; //使用重载运算符完成复数加法
c3.display();
}

//注:当运算符重载为类的成员函数时,函数参数的个数比原来的操作个数要少一个,后置++,--除外,原因是自身数据可以直接

//访问,就不用再放在参数表中传递