运算符重载加减乘除
#include
using namespace std;
class Complex
{
public:
Complex(double r=0,double i=0):real(r),imag(i){}
Complex operator+(Complex &c1);
Complex operator-(Complex &c1);
Complex operator*(Complex &c1);
Complex operator/(Complex &c1);
void input(){cin>>real>>imag;}
void display(){cout<<"("<<real<<","<<imag<<"i)";}
private:
double real;
double imag;
};
int main()
{
Complex c1,c2,c3;
char a;
while(1)
{
c1.input();
cin>>a;
c2.input();
switch(a)
{
case '+':c3=c1+c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;
case '-':c3=c1-c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;
case '*':c3=c1*c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;
case '/':c3=c1/c2;c1.display();cout<<a;c2.display();cout<<"=";c3.display();break;
}
}
return 0;
}
Complex Complex::operator+(Complex &c1)
{
Complex c;
c.real=real+c1.real;
c.imag=imag+c1.imag;
return c;
}
Complex Complex::operator-(Complex &c1)
{
Complex c;
c.real=real-c1.real;
c.imag=imag-c1.imag;
return c;
}
Complex Complex::operator*(Complex &c1)
{
Complex c;
c.real=real*c1.real-imag*c1.imag;
c.imag=imag*c1.real+real*c1.imag;
return c;
}
Complex Complex::operator/(Complex &c1)
{
Complex c;
c.real=(real*c1.real+imag*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag);
c.imag=(imag*c1.real-real*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag);
return c;
}