初步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
版權宣告:本文部落格原創文章,部落格,未經同意,不得轉載。