運算符重載(c++)

              運算符重載的應用,計算兩個複數的和。

        

#include<iostream>
using namespace std;
//類體**********************
class Complex
{
public:
	//無參構造函數賦初始值
	Complex()             
	{
		real = 0;
		imag = 0;
	}
	//有參構造函數
	Complex(double r,double i)   
	{
		real = r;
		imag = i;
	}
	//聲明重載運算符 + 的函數
	Complex operator + (Complex &c2);
	//聲明重載運算符 - 的函數
	Complex operator - (Complex &c2);
	void display();
	void GetComplex();
private:
	double real;
	double imag;

};
//**************************
Complex Complex::operator +(Complex &c2)  //operator + 是一個函數名,是Complex的成員函數
{
	Complex c;            //創建一個對象c
	c.real = real + c2.real;        //調用 c1+c2的時候,相當於c1.operator + (c2),即以c2爲實參調用c1的運算重載符函數進行求值
	c.imag = imag + c2.imag;
	return c;
}
//*************************
Complex Complex::operator -(Complex &c2)
{
	Complex c;            //創建一個對象c
	c.real = real - c2.real;
	c.imag = imag - c2.imag;
	return c;
}
//***************************
void Complex::display()
{
	if(imag>0)
	cout<<real<<"+"<<imag<<"i"<<endl;
	else
		cout<<real<<imag<<"i"<<endl;

}
//***************************
void Complex::GetComplex()
{
	cin>>real>>imag;
}
//主函數***********************
int main()
{
	Complex c1,c2,c3,c4;
	cout<<"請分別輸入第一個複數的實部與虛部:"<<endl;
	c1.GetComplex();
	cout<<"請分別輸入第二個複數的實部與虛部:"<<endl;
	c2.GetComplex();
	c3=c1+c2;
	c4=c1-c3;
	cout<<"c1=";
	c1.display();
	cout<<"c2=";
	c2.display();
	cout<<"c1+c2=";
	c3.display();
	cout<<"c1-c3=";
	c4.display();
return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章