/*用友元成員函數重載運算符,實作+-的重載使之适用複數計算
*/
#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;
}
結果:
