📄 ep4_8_2.cpp
字号:
#include<iostream.h>
class complex{
private:
double real; //实部
double imag; //虚部
public:
complex(double r = 0.0 ,double i = 0.0 ); //构造函数
void print(); //显示复数
friend complex operator+(const complex &,const complex &); //重载复数"+"
friend complex operator-(const complex &,const complex &); //重载复数"-"
friend complex operator*(const complex &,const complex &); //重载复数"*"
friend complex operator/(const complex &,const complex &); //重载复数"/"
friend complex &operator+=(complex &,const complex &); //重载复数"+="
friend complex &operator-=(complex &,const complex &); //重载复数"-="
friend complex &operator*=(complex &,const complex &); //重载复数"*="
friend complex &operator/=(complex &,const complex &); //重载复数"/="
friend complex operator++(complex &); //重载复数前缀"++"
friend complex operator++(complex &,int); //重载复数后缀"++"
};
complex::complex(double r,double i){
real=r;
imag=i;
}
complex operator +(const complex &c1,const complex &c2){ //重载复数"+"
complex temp;
temp.real=c1.real+c2.real;
temp.imag=c1.imag+c2.imag;
return temp; //返回局部变量,函数声明不可为引用,这时返回了局部变量的地址
}
complex operator -(const complex &c1,const complex &c2){ //重载复数"-"
complex temp;
temp.real=c1.real-c2.real;
temp.imag=c1.imag-c2.imag;
return temp;
}
complex operator *(const complex &c1,const complex &c2){ //重载复数"*"
complex temp;
temp.real=c1.real*c2.real-c1.imag*c2.imag;
temp.imag=c1.real*c2.imag+c1.imag*c2.real;
return temp;
}
complex operator /(const complex &c1,const complex &c2){ //重载复数"/"
complex temp;
double d;
d=(c2.real*c2.real+c2.imag*c2.imag);
temp.real=(c1.real*c2.real+c1.imag*c2.imag)/d;
temp.imag=(c2.real*c1.imag-c1.real*c2.imag)/d;
return temp;
}
complex &operator +=(complex &c1,const complex &c2){ //重载复数"+="
c1.real=c1.real+c2.real;
c1.imag=c1.imag+c2.imag;
return c1; //返回由引用参数传递过来的变量,函数声明可为引用
}
complex &operator -=(complex &c1,const complex &c2){ //重载复数"-="
c1.real=c1.real-c2.real;
c1.imag=c1.imag-c2.imag;
return c1;
}
complex &operator *=(complex &c1,const complex &c2){ //重载复数"*="
complex temp;
temp.real=c1.real*c2.real-c1.imag*c2.imag;
temp.imag=c1.real*c2.imag+c1.imag*c2.real;
c1=temp;
return c1;
}
complex &operator /=(complex &c1,const complex &c2){ //重载复数"/="
complex temp;
double d;
d=(c2.real*c2.real+c2.imag*c2.imag);
temp.real=(c1.real*c2.real+c1.imag*c2.imag)/d;
temp.imag=(c2.real*c1.imag-c1.real*c2.imag)/d;
c1=temp;
return c1;
}
complex operator ++(complex & c){ //重载复数前缀"++"
++c.real;
++c.imag;
return c;
}
complex operator ++(complex & c,int){ //重载复数后缀"++"
complex temp(c.real,c.imag);
c.real++;
c.imag++;
return temp;
}
void complex::print(){ //显示复数
cout<<real;
if(imag>=0) cout<<'+';
cout<<imag<<'i'<<endl;
}
int main(){
complex A(30,40),B(15,30),C,D; //定义4个复数对象
cout<<"A为:";
A.print();
C=operator++(A,1);//即C=A++完整的表达式
cout<<"C=A++后,C为:";
C.print();
cout<<"A为:";
A.print();
C=operator++(A);//即++A
cout<<"C=++A后,C为:";
C.print();
cout<<"A为:";
A.print();
C=A*B;
cout<<"C=A*B后,C为:";
C.print();
A*=B;
cout<<"A*=B后,A为:";
A.print();
C=A/B;
cout<<"C=A/B后,C为:";
C.print();
A/=B;
cout<<"A/=B后,A为: ";
A.print();
cout<<"B为:";
B.print();
D=A+B+C;
cout<<"D=A+B+C后,D为:";
D.print();
A+=B+=C;
cout<<"A+=B+=C后,A为:";
A.print();
cout<<"B为:";
B.print();
D=A-B-C;
cout<<"D=A-B-C后,D为:";
D.print();
A-=B+=C;
cout<<"A-=B+=C后,A为:";
A.print();
cout<<"B为:";
B.print();
A=B;
cout<<"A=B后,A为:";
A.print();
D=A*B*C;
cout<<"D=A*B*C后,D为:";
D.print();
D=D/B/C;
cout<<"D=D/B/C后,D为:";
D.print();
A*=B*=C;
cout<<"A*=B*=C后,A为:";
A.print();
A/=B/=C/=C;
cout<<"A/=B/=C/=C后,A为:";
A.print();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -