/*用友元成员函数重载运算符,实现+-的重载使之适用复数计算
*/
#include<iostream>
using namespace std;
class complex{
private:
double real,virt;
public:
complex(){}
complex(double r,double v){
real=r;virt=v;
}
~complex(){}
friend complex operator + (complex c1,complex c2);
friend complex operator - (complex c1,complex c2);
friend ostream& operator <<(ostream &,complex &);
};
complex operator + (complex c1,complex c2){
return complex(c1.real+c2.real,c1.virt+c2.virt);
}
complex operator - (complex c1,complex c2){
return complex(c1.real-c2.real,c1.virt-c2.virt);
}
/*友元函数在外面实例化的时候不用加类名,本来就不怎么严格算作成员函数*/
ostream& operator <<(ostream &output,complex &c){
output<<"["<<c.real<<","<<c.virt<<"]"<<endl;
return output;
}
void main(){
complex c(3.2,2.6),p(6.5,5.8),m;
m=c+p;/*调用运算符重载函数执行实部与实部相加,虚部与虚部相加*/
cout<<m<<endl;/*运算符重载输出流,使之能输出类对象*/
m=c-p;
cout<<m<<endl;
}
结果: