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;
}
#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;
}
相关文章推荐
- 【c++】实现一个复数类
- 对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
- C++实现复数类
- C++ 使用模版范式写一个单例模式的类--简单实现单例模式
- 一个C++的BlockingQueue实现
- 采用C++的ACE库实现的一个通用的C/S架构通信程序
- C++中一个高效的内存池实现
- c++::实现一个日期类
- C++实现一个限制对象实例个数的类
- 一个Windows C++的线程池的实现
- 【编程题】-C++实现:判断字符串在末尾加一个字符,能否构成回文串
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- 算法题 用C或C++实现void reverse(char* str)函数,即反转一个null结尾的字符串
- C++实现一个简单的异常日志记录类
- 【C++】一个简单栈的实现
- C++简单实现一个内存池的分配
- C++实现的 如何删除一个指定的文件
- 用C++实现一个Brainfuck解释器
- C++使用两个栈实现一个可以获取栈中最大值和最小值的栈
- 一个简单的双向链表(C++实现)