運算符重載的應用,計算兩個複數的和。
#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;
}