++、--运算符重载

#include <iostream>

using namespace std;

class Complex
{
    friend Complex &operator ++(Complex &c);
    friend Complex operator ++(Complex &c, int);
public:
    Complex(int a = 0, int b = 0)
    {
        m_a = a;
        m_b = b;
    }
    void show()
    {
        if (m_b == 0)
            cout << m_a << endl;
        else if(m_b>0)
            cout << m_a << " + " << m_b << "i" << endl;
        else
            cout << m_a << " - " << m_b*-1 << "i" << endl;
    }

Complex operator +(Complex &c)
{
    Complex tmp(m_a+c.m_a, m_b+c.m_b);
    return tmp;
}

// 前置--
Complex &operator --()
{
    m_a--;
    m_b--;

    return *this;
}

// 后置--
Complex operator --(int)
{
    Complex tmp(c.m_a, c.m_b);

    m_a--;
    m_b--;

    return tmp;
}



private:
    int m_a;   // 实部
    int m_b;   // 虚部
};

// 前置++
Complex &operator ++(Complex &c)
{
    c.m_a++;
    c.m_b++;

    return c;
}

// 后置++: 多了一个 int 的占位参数,和前置++进行区分
Complex operator ++(Complex &c, int)
{
    Complex tmp(c.m_a, c.m_b);

    c.m_a++;
    c.m_b++;

    return tmp;
}

int main()
{
    Complex c1(1,2), c2(10), c3;
    //++c1;  // operator ++(c1)
c3 = ++c1 + c2;  // operator+( ++c1,  c2); ==> operator+( operator ++(c1),  c2)
c3.show();

--c1;

c3 = c1++ + c2;  // operator+( c1++,  c2); ==> operator+( operator ++(c1, 0),  c2)
c3.show();
c1.show();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值