您的位置:首页 > 编程语言 > C语言/C++

C++实现一个复数类

2017-09-18 20:44 387 查看
1.实现一个复数类的代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

class Complex
{
public:
//默认的构造函数(含缺省值,并初始化参数)
Complex(const double real=0.0, const double image=0.0)
:_real(real)
, _image(image)
{}

//拷贝构造函数
Complex(const Complex& c)
{
_real = c._real;
_image = c._image;
}
//析构函数
~Complex()
{}
//赋值运算符的重载
Complex& operator=(const Complex& c)
{
this->_real = c._real;
this->_image = c._image;
return *this;
}
Complex operator+(const Complex& c)
{
Complex tmp;
tmp._real = _real + c._real;
tmp._image = _image + c._image;
return tmp;
}
Complex operator-(const Complex& c)
{
Complex tmp;
tmp._real = _real - c._real;
tmp._image = _image - c._image;
return tmp;
}
Complex operator*(const Complex& c)
{
Complex tmp;
tmp._real = _real * c._real-_image*c._image;
tmp._image = _real * c._image+_image*c._real;
return tmp;
}
Complex operator/(const Complex& c)
{
Complex tmp;
tmp._real = (_real / c._real + _image*c._image) / (c._real*c._real + c._image*c._image);
tmp._image = (_image*c._real - _real*c._image) / (c._real*c._real + c._image*c._image);
return tmp;
}
Complex operator+=(const Complex& c)
{
_real += c._real;
_image += c._image;
return *this;
}
Complex operator-=(const Complex& c)
{
_real -= c._real;
_image -= c._image;
return *this;
}
Complex operator*=(const Complex& c)
{
double real0=_real;
double image0 = _image;
_real = (real0 * c._real - image0*c._image);
_image = (real0 * c._image + image0*c._real);
return *this;
}
Complex operator/=(const Complex& c)
{
double real0 = _real;
double image0 = _image;
_real /= (real0 / c._real + image0*c._image) / (c._real*c._real + c._image*c._image);
_image /= (image0*c._real - real0*c._image) / (c._real*c._real + c._image*c._image);
return *this;
}

void Display()
{
cout << _real<<" "<< _image << endl;
}

private:
double _real;
double _image;
};
//测试函数
void Funtest()
{
Complex c1(2.0,3.0);
c1.Display();
Complex c2(c1);
c2.Display();
Complex c3;
c1 *= c2;
//c3 = c1*c2;
c1.Display();
}

int main()
{
Funtest();
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: