例子:两个复数进行相加运算。
第一种重载形式:重载为成员函数。
#include<iostream>
using namespace std;
class complex{
public:
complex()
{
real=0;imag=0;
}
complex(double i,double j)
{
real=i;imag=j;
}
void output()
{
if(imag==0)
cout<<real<<endl;
else if(imag<0)
cout<<real<<imag<<"i"<<endl;
else
cout<<real<<"+"<<imag<<"i"<<endl;
}
complex operator+(complex& m)
{
complex d;
d.real=m.real+real;
d.imag=m.imag+imag;
return d;
}
private:
double real,imag;
};
int main()
{
complex c1(2,3),c2(3,-5),c;
c=c1+c2; //c=c1.operator+(c2)
c.output();
return 0;
}
第二种重载形式:重载为友元函数
#include<iostream>
using namespace std;
class complex{
public:
complex()
{
real=0;imag=0;
}
complex(double i,double j)
{
real=i;imag=j;
}
void output()
{
if(imag==0)
cout<<real<<endl;
else if(imag<0)
cout<<real<<imag<<"i"<<endl;
else
cout<<real<<"+"<<imag<<"i"<<endl;
}
friend complex operator+(complex& m,complex& n);
private:
double real,imag;
};
complex operator+(complex& m,complex& n)
{
complex d;
d.real=m.real+n.real;
d.imag=m.imag+n.imag;
return d;
}
int main()
{
complex c1(2,3),c2(3,-5),c;
c=c1+c2; //c=operator+(c1,c2)
c.output();
return 0;
}