⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ep4_8_1.cpp

📁 这里有大量的c语言习题呢!真的是题海哦
💻 CPP
字号:
/*4.8  为复数类(Complex)增加重载的运算符-、-=、*=和/=。设++为实部和虚部各自增一,
亦请重载前置与后置++运算符。分别使用成员函数和友元函数各做一遍。并测试。*/
//注:测试时后一运算符参数是前一运算符运算结果
//使用成员函数
#include<iostream>
using namespace std;
class complex{
  private:
    double real;  //实部
    double imag; //虚部
  public:
    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 -=(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;
}

complex complex::operator +(complex c){     //重载复数"+"
	complex temp;
	temp.real=real+c.real;
	temp.imag=imag+c.imag;
	return temp; //返回局部变量,函数声明不可为引用,这时返回了局部变量的地址
}

complex complex::operator -(complex c){     //重载复数"-"
	complex temp;
	temp.real=real-c.real;
	temp.imag=imag-c.imag;
	return temp;
}

complex complex::operator *(complex c){     //重载复数"*"
	complex temp;
    temp.real=real*c.real-imag*c.imag;
    temp.imag=real*c.imag+imag*c.real;
	return temp;
}

complex complex::operator /(complex c){     //重载复数"/"
	complex temp;
    double d;
    d=c.real*c.real+c.imag*c.imag;
    temp.real=(real*c.real+imag*c.imag)/d;
    temp.imag=(c.real*imag-real*c.imag)/d;
    return temp;
}

complex complex::operator +=(complex c){     //重载复数"+="
	complex temp;
	temp.real=real+c.real;
	temp.imag=imag+c.imag;
	real=temp.real;
	imag=temp.imag;
	return temp;
}

complex complex::operator -=(complex c){     //重载复数"-="
	complex temp;
	temp.real=real-c.real;
	temp.imag=imag-c.imag;
	real=temp.real;
	imag=temp.imag;
	return temp;
}

complex complex::operator *=(complex c){     //重载复数"*="
	complex temp;
    temp.real=real*c.real-imag*c.imag;
    temp.imag=real*c.imag+imag*c.real;
	real=temp.real;
	imag=temp.imag;
    return temp;
}

complex complex::operator /=(complex c){     //重载复数"/="
	complex temp;
    double d;
    d=c.real*c.real+c.imag*c.imag;
    temp.real=(real*c.real+imag*c.imag)/d;
    temp.imag=(c.real*imag-real*c.imag)/d;
	real=temp.real;
	imag=temp.imag;
    return temp;
}

complex complex::operator ++(){     //重载复数前缀"++"
	complex temp;
	temp.real=++real;
	temp.imag=++imag;
	return temp;
}

complex complex::operator ++(int){     //重载复数后缀"++"
	complex temp(real,imag);
	real++;
	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=A.operator++(1);//即C=A++完整的表达式
	cout<<"C=A++后,C为:";
	C.print();
	cout<<"A为:";
	A.print();
	C=A.operator++();//即++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 + -