C++小练习:封装一个Complex 复数类, 属性有 real 实部 image 虚部

文章介绍了如何在C++中封装一个Complex复数类,包括实部和虚部属性,并实现了复数与复数、复数与实数的加法运算。通过重载加法运算符+(成员函数和友元函数),实现了复数间的加法以及复数与实数的加法,展示了C++的面向对象编程特性。
摘要由CSDN通过智能技术生成

 封装一个Complex 复数类, 属性有 real 实部 image 虚部
1.实现两个复数相加   (实部加实部,虚部加虚部)
2.一个复数加一个实数,(应该是用复数的实部加上实数。虚部不变)
例如
 Complex c1(2.2,1);
double d=1.8;
Complex c2=c1+d;  //c1的实部2.2加上1.8 虚部不变 结果是(4,1)
Complex c3=c1+c2; //结果是(6.2,2)

#include <iostream>
using namespace std;
class Complex{
private:
    double real;
    double image;
public:
    Complex(double r,double i){
        real=r;
        image=i;
    }
    friend Complex operator + (Complex& count1,double d);
    friend Complex operator +(Complex& count1,Complex& count2);
    friend Complex operator +(double d,Complex& count3);
    void show(){
        cout<<"经过计算,结果如下:"<<endl;
        cout<<"( "<<real<<" , "<<image<<" )"<<endl;
    }
};
Complex operator +(Complex& count1,double d){
    double s1 = (count1.real + d);
    double x1 = (count1.image);
    Complex t1(s1,x1);
    return t1;
}
Complex operator +(Complex& count1,Complex& count2){
    double s2 = (count1.real + count2.real);
    double x2 = (count1.image + count2.image);
    Complex t2(s2,x2);
    return t2;
}
Complex operator +(double d,Complex& count3){
    double s4 = (count3.real + d);
    double x4 = (count3.image);
    Complex t4(s4,x4);
    return t4;
}
int main(){
    Complex count1(2.2,1);
    double d=1.8;
    Complex count2 = count1 + d;
    count2.show();
    Complex count3 = count1 + count2;
    count3.show();
    Complex count4 = d + count3;
    count4.show();
}

运行结果如下: 

讲师解析方法:

   -->成员函数重载隐含的this指针,占据第一个参数位置<--

#include <iostream>
using namespace std;
class Complex{
private:
double real;
double image;
public:
Complex(double real,double image){
this->real=real;
this->image;
}
Complex operator +(Complex& other){
int r=real+other.real;
int i=image+other.image;
Complex t(r,i);
return t;

}
Complex operator +(double d){
int r=real+d;
int i=image;
Complex t(r,i);
return t;
}
friend Complex operator +(double t,Complex& other);

};
Complex operator +(double t,Complex& other){
int r=other.real+t;
int i=other.image;
Complex temp(r,i);
return temp;
}
int main()
{
Complex c1(1,1);
Complex c2(1.5,1.5);
Complex c3=c1+c2;

double dd=1.5;
Complex c4=c3+dd; 
//Complex+double 当第一个参数是对象类型,也就是加号运算符前的是对象类型。
//可以采用成员函数重载

Complex c5=dd+c4; 
//double+Complex 当第一个参数是不对象类型,这时就需要友元函数重载

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值