二、C++复数的实现

2018-06-17 21:02:16来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:实验1

下一篇:10.C++-构造函数初始化列表、类const成员、对象构造顺序、析构函