//友元函數運算符重載 雙目運算符
#include<iostream>
using namespace std;
class complex{
private:
double real,imag;
public:
complex(double r=0.0,double i=0.0);
~complex();
friend complex operator +(complex a,complex b);
friend complex operator -(complex a,complex b);
void print() ;
};
int main()
{
complex c1(1,2),c2(3,4),c3(5,6),total1,total2;
total1=c1+c2;
total1.print();
total2=c2-c3;
total2.print();
return 0;
}
complex::complex(double r,double i)
{
real=r;
imag=i;
cout<<"constructing..."<<endl;
}
complex::~complex()
{
cout<<"destructing..."<<endl;
}
void complex::print()
{
cout<<real;
if(imag>0)
cout<<"+"<<imag<<"i"<<endl;
else
cout<<imag<<"i"<<endl;
}
complex operator +(complex a,complex b)
{
complex temp;
temp.real=a.real+b.real;
temp.imag=a.imag+b.imag;
return temp;
}
complex operator -(complex a,complex b)
{
complex temp;
temp.real=a.real-b.real;
temp.imag=a.imag-b.imag;
return temp;
}
運作結果:
constructing…
constructing…
constructing…
constructing…
constructing…
constructing…
destructing…
destructing…
destructing…
4+6i
constructing…
destructing…
destructing…
destructing…
-2-2i
destructing…
destructing…
destructing…
destructing…
destructing…