#ifndef __EXAMPLE__
#define __EXAMPLE__
#include<iostream>
using namespace std;
class Complex{
public:
Complex(double i=0,double j=0):data1(i),data2(j){}
Complex(const Complex& c):data1(c.data1),data2(c.data2){}
Complex& operator=(const Complex& c);
~Complex(){}
friend ostream& operator<<(ostream& out,const Complex& c);
friend istream& operator>>(istream& in,Complex& c);
friend Complex operator+(const Complex&c1,const Complex&c2);
Complex& operator+=(const Complex& c);
bool operator==(const Complex& c);
bool operator!=(const Complex& c);
private:
double data1;
double data2;
};
bool Complex::operator==(const Complex& c)
{
return ((data1==c.data1)&&(data2==c.data2));
}
bool Complex::operator!=(const Complex& c)
{
return !(*this==c);
}
Complex& Complex::operator+=(const Complex& c)
{
data1=data1+c.data1;
data2=data2+c.data2;
return *this;
}
Complex operator+(const Complex&c1,const Complex&c2)
{
Complex c(c1);
c+=c2;
return c;
}
istream& operator>>(istream& in,Complex& c)
{
in>>c.data1>>c.data2;
if(!in)
c=Complex();
return in;
}
ostream& operator<<(ostream& out,const Complex& c)
{
if(c.data2>=0)
out<<c.data1<<"+"<<c.data2<<"i";
else
out<<c.data1<<c.data2<<"i";
return out;
}
Complex& Complex::operator=(const Complex& c)
{
data1=c.data1;
data2=c.data2;
return *this;
}
#endif
#include"complex_data.h"
#include<iostream>
using namespace std;
int main(){
Complex c1;
Complex c2;
Complex c3=Complex(1,1);
Complex *c4=new Complex(2,2);
c2=*c4;
Complex c5(c3);
cin>>c1;
cout<<c1<<endl;
cout<<c2<<endl;
cout<<c3<<endl;
cout<<*c4<<endl;
cout<<c5<<endl;
c1+=c2;
cout<<"c1=+c2:"<<c1<<endl;
c2=c1+c3;
cout<<"c2=c1+c3:"<<c2<<endl;
cout<<"c1==c2?"<<(c1==c2)<<endl;
cout<<"c3==c5?"<<(c3==c5)<<endl;
return 0;
}