【C++】 复数类操作

复数的概念我们高中已经接触过,包含是实部和虚部,

For example:2i + 3J;实部和虚部值可为整型,亦可浮点型,那在此实现一下简单的复数类的操作


代码如下:

class Complex
{
public:

    Complex(double real,double imag)
    {
        _real = real;
        _imag = imag;
    }

    Complex(const Complex& c)
    {
        _real = c._real;
        _imag = c._imag;
    }

    ~Complex()
    {
        
    }
    
    Complex& operator=(const Complex& c)
    {
        if(&c != this)
        {
        this->_real = c._real;
        this->_imag = c._imag;
        }
        return *this;
    }
    
    Complex operator+(const Complex& c)
    {
        Complex ret(*this);// + 运算返回运算后的值

        ret._real += c._real;
        ret._imag += c._imag;
        
        return ret;
    }

    Complex& operator++() // 前置++ , 当外面需要此返回值时,需要加&
    {
        this->_real += 1;
        this->_imag += 1;

        return *this;
    }

    Complex operator++(int) // 后置++ ,当外面不需要此返回值时,无需加&
    {
        Complex tmp(*this);//后置++返回原来的值,故定义一个临时变量保存起来

        this->_real += 1;
        this->_imag += 1;

        return tmp;
    }

    
    Complex& operator+= (const Complex& c)
    {
        this->_real = this->_real + c._real;
        this->_imag = this->_imag + c._imag;

        return *this;
    }

    inline bool operator==(const Complex& c)
    {
        return (_real == c._real 
                && _imag == c._imag);
    }

    inline bool operator>(const Complex& c)
    {
        return (_real > c._real
                && _imag > c._imag);
    }

    inline bool operator>=(const Complex& c)
    {
        
        //return (_real >= c._real
        //        && _imag >= c._imag);

        return (*this > c) || (*this == c);//直接使用上面实现重载符 > 和 ==

    }

    inline bool operator<=(const Complex& c)
    {
        //return (_real <= c._real
        //        && _imag <= c._imag);

        return !(*this > c);//直接使用上面实现重载符 > 
    
    }

    bool operator<(const Complex& c)
    {
        return !(*this > c) || (*this == c);//直接使用上面实现重载符 >= 
    }

    inline void Display()
    {
        cout<<_real<<"-"<<_imag<<endl;
    }

private:

    double _real;
    double _imag;

};


测试单元:(偷懒就在main函数里测试,可以单独封装一个函数进行测试)

int main()
{
    Complex c(1,2);
    Complex c1(c);

    //c1.Display();
    //Complex ret = ++c1;
    //Complex ret = c1++;
    //ret.Display();
    Complex ret(c1);
    ret.Display();

    return 0;
}




本文出自 “Vs吕小布” 博客,谢绝转载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值