11、友元函数计算2+z

发布时间 2023-04-21 23:47:44作者: 找回那所有、

如题,要求实现:

1、输入一个复数

2、按后缀那样计算

3、Show出结果。

例如输入:

7 8

输出

(14+8i)
(5+4i)
(7+4i)

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

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

void Cmycomplex::Set(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 operator +(double r,Cmycomplex &z)//类外无需写friend关键字,可看作普通函数,不属于该类 
{
    Cmycomplex tmp;
    tmp.real=r+z.real;
    tmp.imag=z.imag;
    return tmp;
}

Cmycomplex operator +(Cmycomplex &z,double r)//类外无需写friend关键字,可看作普通函数,不属于该类 
{
    Cmycomplex tmp;
    tmp.real=z.real+r;
    tmp.imag=z.imag;
    return tmp;
}

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

} 
//StudybarCommentEnd

-END