#ifndef _COMPLEX_H_
#define _COMPLEX_H_
class Complex
{
public:
Complex(double real,double imag):_real(real),_imag(imag)
{
};
~Complex(){ };
void display();
Complex operator+(const Complex& b);
Complex operator+(double b);
Complex& operator+=(const Complex& b);
Complex& operator+=(double b);
Complex operator-(const Complex& b);
Complex operator-(double b);
Complex& operator-=(const Complex& b);
Complex& operator-=(double b);
Complex operator*(const Complex& b);
Complex operator*(double b);
Complex& operator*=(const Complex& b);
Complex& operator*=(double b);
Complex operator/(const Complex& b);
Complex operator/(double b);
Complex& operator/=(const Complex& b);
Complex& operator/=(double b);
private:
double _real;
double _imag;
};
#endif
#include "complex.h"
#include <iostream>
using namespace std;
Complex Complex::operator+(double b)
{
return Complex( _real+b, _imag);
}
Complex Complex::operator+(const Complex& b)
{
return Complex( _real+b._real, _imag+b._imag);
}
Complex& Complex::operator+=(const Complex& b)
{
_real=_real+b._real;
_imag=_imag+b._real;
return *this;
}
Complex& Complex::operator+=(double b)
{
_real=_real+b;
return *this;
}
Complex Complex::operator-(double b)
{
return Complex( _real-b, _imag);
}
Complex Complex::operator-(const Complex& b)
{
return Complex( _real-b._real, _imag-b._imag);
}
Complex& Complex::operator-=(const Complex& b)
{
_real=_real-b._real;
_imag=_imag-b._real;
return *this;
}
Complex& Complex::operator-=(double b)
{
_real=_real-b;
return *this;
}
//
Complex Complex::operator*(double b)
{
return Complex( _real*b, _imag);
}
Complex Complex::operator*(const Complex& b)
{
return Complex( _real*b._real, _imag*b._imag);
}
Complex& Complex::operator*=(const Complex& b)
{
_real=_real*b._real;
_imag=_imag*b._real;
return *this;
}
Complex& Complex::operator*=(double b)
{
_real=_real*b;
return *this;
}
Complex Complex::operator/(double b)
{
return Complex( _real/b, _imag);
}
Complex Complex::operator/(const Complex& b)
{
return Complex( _real/b._real, _imag/b._imag);
}
Complex& Complex::operator/=(const Complex& b)
{
_real=_real/b._real;
_imag=_imag/b._real;
return *this;
}
Complex& Complex::operator/=(double b)
{
_real=_real/b;
return *this;
}
void Complex::display()
{
cout<<_real<<"+"<<_imag<<"i"<<endl;
}
#include "complex.h"
int main()
{
Complex c(1,2);
Complex c1(1,2);
double c2=7;
c1+=3;
c1+=c;
Complex c3=c+c1;
Complex c4(1,2);
c1-=3;
c1-=c;
c3=c1-c2;
c*=c1;
c*=4;
c/=c4;
c=c1/4;
c/=c2;
c.display();
c1.display();
c4.display();
c3.display();
return 0;
}