天天看點

C++用友元成員函數重載運算符,實作+-的重載使之适用複數計算

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

結果:

C++用友元成員函數重載運算符,實作+-的重載使之适用複數計算