天天看點

【C++】友元函數運算符重載,複數相加。

//友元函數運算符重載 雙目運算符 
#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…

繼續閱讀