c++ 复数类
# pragma once//头文件
class Complex
{
public:
Complex(double Real = 0, double Imag = 0);//构造函数
~Complex();
Complex& operator =(Complex& Num);//拷贝
Complex operator +(const Complex& Num);//复数加法
Complex operator -(const Complex& Num);//复数减法
Complex operator *(const Complex& Num);//复数乘法
Complex operator /(const Complex& Num);//复数除法
Complex& operator +=(const Complex& Num);
bool operator > (const Complex& Num);//大于
bool operator <=(const Complex& Num);//小 等
void Print_Complex();//打印复数
private:
double _real;//实部
double _imag;//虚部
};
#include<iostream>//函数文件
#include"complex.h"
using namespace std;
Complex::Complex(double Real , double Imag )//构造函数
{
_real = Real;
_imag = Imag;
}
Complex::~Complex()
{
}
Complex& Complex:: operator=(Complex& Num)//拷贝构造
{
_real = Num._real;
_imag = Num._imag;
return *this;
}
Complex Complex:: operator +(const Complex& Num)//复数加法
{
Complex tmp;
tmp._real = _real + Num._real;
tmp._imag = _imag + Num._imag;
return tmp;
}
Complex Complex:: operator -(const Complex& Num)//复数减法
{
Complex tmp;
tmp._real = _real - Num._real;
tmp._imag = _imag - Num._imag;
return tmp;
}
Complex Complex::operator *(const Complex& Num)//复数乘法
{
double tmpReal = this->_real;
double tmpImag = this->_imag;
Complex tmp;
tmp._real = _real *Num._real - _imag *Num._imag ;
tmp._imag = tmpImag* Num._real + tmpReal* Num._imag;
return tmp;
}
Complex Complex:: operator /(const Complex& Num)//复数除法
{
if (Num._imag == 0 && Num._real == 0)
exit(-1);
double tmpReal = this->_real;
double tmpImag = this->_imag;
Complex tmp;
tmp._real = (_real *Num._real + _imag *Num._imag) / (Num._imag*Num._imag + Num._real*Num._real);
tmp._imag = (tmpImag* Num._real - tmpReal* Num._imag) / (Num._imag*Num._imag + Num._real*Num._real);
return tmp;
}
Complex& Complex::operator +=(const Complex& Num)
{
_real = _real + Num._real;
_imag = _imag + Num._imag;
return *this;
}
void Complex::Print_Complex()//打印复数
{
if (this->_imag)
cout <<this->_real << "+" << this->_imag << "i" << endl;
else
cout << this->_real << endl;
}
bool Complex::operator > (const Complex& num)
{
return (_real*_real + _imag*_imag )>( num._real*num._real + num._imag*num._imag);
}
bool Complex::operator <=(const Complex& num)
{
return !(*this > num);
}
#include<iostream>//主函数测试函数
#include"complex.h"
using namespace std;
void test1()
{
Complex com1(1, 2);
Complex com2(3, 4);
Complex com3(1, 1);
com3 = com1 - com2;
com3.Print_Complex();
com3 = com1 + com2;
com3.Print_Complex();
com3 = com1*com2;
com3.Print_Complex();
com3 = com1 / com2;//(ac+bd)/(c^2+d^2) +(bc-ad)/(c^2+d^2)i
com3.Print_Complex();
}
int main()
{
test1();
return 0;
}
转载于:https://blog.51cto.com/shaungqiran/1713434