//Complex.h
#ifndef ComplexH
#define ComplexH
#include <iostream>
//---------------------------------------------------------------------------
class Complex
{public:
Complex(double r=0,double i=0)
:re(r),im(i)
{}
double real() const {return re;}
double imag() const {return im;}
int func(const Complex ¶) const
{return para.re+para.im;}
Complex & operator +=(const Complex &);
Complex & operator =(const Complex &) ;
bool operator ==(const Complex &) ;
bool operator !=(const Complex &) ;
private:
double re,im;
friend Complex & _doapl(Complex *,const Complex &r);
};
ostream &
operator <<(ostream &os,const Complex &r );
#endif
//Complex.cpp
//---------------------------------------------------------------------------
#include <iostream>
#include "Complex.h"
using namespace std;
//---------------------------------------------------------------------------
inline Complex&
_doapl(Complex *ths,const Complex & r)
{
ths->re+=r.re;
ths->im+=r.im;
return *ths;
}
Complex &
Complex::operator +=(const Complex &r)
{
return _doapl(this,r);
}
Complex &
Complex::operator =(const Complex &c)
{
re=c.re;
im=c.im;
return *this;
}
ostream &
operator <<(ostream &os,const Complex &r )
{
return os<<"("<<r.real()<<","<<r.imag()<<")"<<endl;
}
bool Complex::operator ==(const Complex & c)
{
return (this->re == c.re);
}
bool Complex::operator !=(const Complex & c)
{
return !(this->re == c.re);
}
//main.cpp
#include <iostream>
#include "Complex.h"
using namespace std;
int main()
{ Complex c1(2.5,1.5); Complex c2(3.2,1.7);
cout<<c1;
cout<<c2.func(c1)<<endl;
c1+=c2;
cout<<c2;
cout<<c1;
Complex c4(3.2,1.7);
bool bb;
cout<<(bb=(c2==c4))<<endl;
bool cc;
cout<<(cc=(c2!=c1))<<endl;
system("pause");
return 0;
}