运算符重载的应用,计算两个复数的和。
#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;
}