初步C++運算子過載學習筆記<3> 增量遞減運算子過載

weixin_33831673發表於2015-07-06
初步C++運算子過載學習筆記<1>
初探C++運算子過載學習筆記<2> 過載為友元函式
 
 

增量、減量運算子++(--)分別有兩種形式:前自增++i(自減--i)。後自增i++(自減i--)

因此當我們過載該運算子時,要過載對應形式的運算子。

T & operator ++() // 前自增++i

T & operator ++(int) //後自增 i++

 

 

舉例:

#include <iostream>
using namespace std;

class complex
{
    double re;
    double im;
public:
    complex(double _re,double _im):re(_re),im(_im){};
    void print(){cout<<re<<" "<<im<<endl;}
    friend complex operator+(const complex &a ,const complex &b);  //想想返回為什麼不是complex &
    complex& operator++();
    complex& operator++(int);
};

complex operator+(const complex &a , const complex &b)
{
    return complex(a.re + b.re , a.im + b.im );
}

complex& complex::operator++()   //前自增 ++i
{
    re = re + 1;
    return *this;
}

complex& complex::operator++(int)  //後自增 i++ int僅僅是區分前後自增
{
    im = im + 1;
    return *this;
}

int main()
{
    complex a(1,2);
    complex b(3,4);
    complex c = a + b;
    complex d = a + b + c;
    c.print();
    d.print();

    (c++)++;
    c.print();
    ++(++d);
    d.print();
    return 0;
}


結果輸出為:

 

c後自增兩次 虛部由6到8

d前自增兩次 實部從10到12

 

 

 

 

 

 

版權宣告:本文部落格原創文章,部落格,未經同意,不得轉載。

相關文章