二、C++复数的实现
2018-06-17 21:02:16来源:未知 阅读 ()
C++复数的实现
在数字图像处理领域,复数这一类型会被经常使用到。但是在C++和Qt中都没有可以使用的复数类。为了今后的方便,我们可以自己定义一个C++复数类,以便将来使用。
一、复数的属性
复数包含实数部分和虚数部分,如果直接使用 a + ib 的模式会使得后面的一系列操作变得较为复杂。这里我们直接给复数定义两个成员变量 m_rl 和 m_im。
public: double m_rl,m_im;
二、我们同样需要构造函数来初始化复数实例
public: ComplexNumber(double rl,double im); ComplexNumber();
它们的实现如下:
ComplexNumber::ComplexNumber() { m_rl = 0; m_im = 0; } ComplexNumber::ComplexNumber(double rl, double im) { m_rl = rl; m_im = im; }
三、现在我们给复数加上算术运算的功能
在复数的头文件中加入下述代码:
public: // 重载四则运算符号 // 加 ComplexNumber operator +(const ComplexNumber &c){ return ComplexNumber(m_rl+c.m_rl,m_im+c.m_im); } // 减 ComplexNumber operator -(const ComplexNumber &c){ return ComplexNumber(m_rl-c.m_rl,m_im-c.m_im); } // 乘 ComplexNumber operator *(const ComplexNumber &c){ return ComplexNumber(m_rl*c.m_rl-m_im*c.m_im, m_rl*c.m_im+m_im*c.m_rl); } // 除 ComplexNumber operator /(const ComplexNumber &c) { if ((0==c.m_rl) && (0==c.m_im)) { qDebug()<<"ERROR: divider is 0!"; return ComplexNumber(m_rl, m_im); } return ComplexNumber((m_rl*c.m_rl + m_im*c.m_im) / (c.m_rl*c.m_rl + c.m_im*c.m_im), (m_im*c.m_rl - m_rl*c.m_im) / (c.m_rl*c.m_rl + c.m_im*c.m_im)); }
四、其他函数
1.设定复数值
void SetValue(double rl, double im); // 定义 void ComplexNumber::SetValue(double rl, double im) // 实现 { m_rl = rl; m_im = im; }
2.取模
double get_mold(); // 定义 double ComplexNumber::get_mold() // 实现 { double mold; mold = sqrt(m_rl*m_rl+m_im*m_im); return mold; }
至此,复数的实现就完成了。
Github代码链接:
https://github.com/851984709/Junjie-Hu/tree/master/code/qt/others/ComplexNumber
如果上述教程或代码中有任何错误,欢迎批评和指证。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash