7、带输入的复数类-加-减-乘运算符重载

发布时间 2023-04-21 15:59:09作者: 找回那所有、

如题,要求实现:

1、复数类含两个参数的构造函数,一个为实部,一个为虚部。

2、实现-加-减-乘运算符重载运算符重载功能,并实现返回值为复数类。

3、Show出结果。

例如输入

7 8

输出:

(10+12i)
(-4-4i)
(-11+52i)

#include<iostream>
using namespace std;
class Cmycomplex
{
private:
    double real,imag;
public:
    Cmycomplex(double r=0,double i=0);//构造函数设默认值,或者重载构造函数 
    Cmycomplex operator +(Cmycomplex &);//注意,这里只需要传一个参数,运算符+重载功能上类似自定义的.add()函数 
    Cmycomplex operator -(Cmycomplex &);
    Cmycomplex operator *(Cmycomplex &);
    void Set(double x,double y);
    void Show();
};

Cmycomplex::Cmycomplex(double r,double i)//类外定义时无需再写默认值 
{
    real=r;
    imag=i;
}

Cmycomplex Cmycomplex::operator +(Cmycomplex &z) 
{
    Cmycomplex tmp;
    tmp.real=real+z.real;
    tmp.imag=imag+z.imag;
    return tmp;
}

Cmycomplex Cmycomplex::operator -(Cmycomplex &z)
{
    Cmycomplex tmp;
    tmp.real=real-z.real;
    tmp.imag=imag-z.imag;
    return tmp;
}

Cmycomplex Cmycomplex::operator *(Cmycomplex &z)
{
    Cmycomplex tmp;
    tmp.real=real*z.real-imag*z.imag;//这里注意一下运算规则 
    tmp.imag=real*z.imag+z.real*imag;
    return tmp;
}

void Cmycomplex::Set(double x,double y)
{
    real=x;
    imag=y;
}

void Cmycomplex::Show()
{
    if(imag>0)
        cout << "(" << real << "+" << imag << "i" << ")" << endl; 
    else if(imag<0)
        cout << "(" << real << imag << "i" << ")" << endl; 
    else if(imag==0)
        cout << real << endl; 
}
//StudybarCommentBegin
int main()
{
Cmycomplex  z1(3,4),z2(7),z3;
double  x,y;
cin>>x>>y;
z2.Set(x,y);
z3=z1+z2;
cout<<"\n";
z3.Show();
z3=z1-z2;
cout<<"\n";
z3.Show();
z3=z1*z2;
cout<<"\n";
z3.Show();

}
//StudybarCommentEnd

-END