封装一个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 当第一个参数是不对象类型,这时就需要友元函数重载
}