1、;complex complex:operator+(complex& c2) return complex(real+c2.real,imag+c2.imag);operator-(complex& return complex(real-c2.real,imag-c2.imag);operator*(complex& return complex(real*c2.real,imag*c2.imag);operator/(complex& return complex(real/c2.real,imag/c2.imag);int main() complex c1(12,9),c2(2,3)
2、,c3;c1=(;c1.display();cout)endl;c2=(c2.display(); c3=c1+c2;C1+C2=(c3.display(); c3=c1-c2;c1-c2=( c3=c1*c2;c1*c2=( c3=c1/c2;c1/c2=( return 0;输出:c1=(12,9)c2=(2,3)C1+C2=(14,12)c1-c2=(10,6)c1*c2=(24,27)c1/c2=(6,3)Press any key to continue.三、定义一个复数类,重载运算符+,用于复数的加法,参加运算的可是类对象,也可以是只有一个整数,顺序任意,如c1+c2,c1+i,i
3、+c1,设i为整数,编程求两个复数之和,整数和复数之和。 complex()real=0;imag=0; complex(int r,int i): complex(int r)real=r; friend complex operator+(const complex&,const complex& friend ostream& operator(ostream&,complex&complex operator+(const complex& c1,const complex& return complex(c1.real+c2.real,c1.imag+c2.imag);ostream
4、& output,complex& c) output(c.realc.imag return output;c1=c1c2=c2c1+c2=c3 c3=c2+c1;c2+c1= c3=c1+8;c1+8= c3=8+c1;8+c1=c1+c2=(14,12)c2+c1=(14,12)c1+8=(20,9)8+c1=(20,9)4.8 为复数类(Complex)增加重载的运算符-、-=、*=和/=。设+为实部和虚部各自增一,亦请重载前置与后置+运算符。分别使用成员函数和友元函数各做一遍。并测试。解:注意后+,返回的是原值,但实部和虚部已各自增一,所以要先保留原值,再+。这里是使用成员函数。cl
5、ass complex double real; /实部 double imag; /虚部 complex(double r = 0.0 ,double i = 0.0 ); /构造函数 void print(); /显示复数 complex operator +(complex c); /重载复数+ complex operator -(complex c);- complex operator *(complex c);* complex operator /(complex c);/ complex operator +=(complex c);+= complex operator -
6、=(complex c);-= complex operator *=(complex c);*= complex operator /=(complex c);/= complex operator +(); /重载复数前缀+ complex operator +(int); /重载复数后缀complex:complex(double r,double i) real = r; imag = i;operator +(complex c) /重载复数 complex temp; temp.real=real+c.real; temp.imag=imag+c.imag; return temp
7、; /返回局部变量,函数声明不可为引用,这时返回了局部变量的地址operator -(complex c) /重载复数 temp.real=real-c.real; temp.imag=imag-c.imag;operator *(complex c) /重载复数 temp.real=real*c.real-imag*c.imag; temp.imag=real*c.imag+imag*c.real;operator /(complex c) /重载复数 double d; d=c.real*c.real+c.imag*c.imag; temp.real=(real*c.real+imag*c
8、.imag)/d; temp.imag=(c.real*imag-real*c.imag)/d;operator +=(complex c) /重载复数 real=temp.real; imag=temp.imag;operator -=(complex c) /重载复数operator *=(complex c) /重载复数operator /=(complex c) /重载复数operator +() /重载复数前缀 temp.real=+real; temp.imag=+imag;operator +(int) /重载复数后缀 complex temp(real,imag); real+
9、; imag+;void complex:print() /显示复数 cout =0) cout+imag friend complex operator+(const complex &,const complex & friend complex operator-(const complex & friend complex operator*(const complex & friend complex operator/(const complex & friend complex &operator+=(complex &operator-=(complex &operator*=
10、(complex &operator/=(complex & friend complex operator+(complex &,int); real=r; imag=i;complex operator +(const complex &c1,const complex &c2) /重载复数 temp.real=c1.real+c2.real; temp.imag=c1.imag+c2.imag;complex operator -(const complex & temp.real=c1.real-c2.real; temp.imag=c1.imag-c2.imag;complex op
11、erator *(const complex & temp.real=c1.real*c2.real-c1.imag*c2.imag; temp.imag=c1.real*c2.imag+c1.imag*c2.real;complex operator /(const complex & 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;complex &operator +=(comp
12、lex & c1.real=c1.real+c2.real; c1.imag=c1.imag+c2.imag; return c1; /返回由引用参数传递过来的变量,函数声明可为引用operator -=(complex & c1.real=c1.real-c2.real; c1.imag=c1.imag-c2.imag;operator *=(complex & c1=temp;operator /=(complex &complex operator +(complex & c) /重载复数前缀 +c.real; +c.imag; return c; c,int) /重载复数后缀 complex temp(c.real,c.imag); c.real+; c.imag+;real;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1