自增 自減運算子的過載

2021-10-07 03:05:42 字數 1363 閱讀 5032

自增運算子++ ,自減運算子–有前置/後置之分,為了區分所過載的是前置運算子還是後置運算子,c++規定:

前置運算子作為一元運算子過載

//過載為成員函式時

t & operator ++()

t & operator --()

//過載為全域性函式時

t & operator ++

(t&)

t & operatot --

(t&)

後置運算子作為二元運算子過載,多寫乙個沒用的引數
//過載為成員函式時

t & operator ++

(int n)

t & operator --

(int n)

//過載為全域性函式時

t & operator ++

(t &

,int n)

t & operator --

(t &

,int n)

但是在沒有後置運算子過載而有前置運算子過載的情況下,在vs中,obj++也呼叫前置過載,在dev中,則obj++編譯出錯

class cdemo

cdemo operator++

(int);

//後置

cdemo &operator++()

;//前置

friend cdemo operator--

(cdemo &

,int);

//全域性後置

friend cdemo &operator--

(cdemo &);

//全域性前置

friend ostream & operator<<

(ostream &os,

const cdemo &d);}

;ostream &operator <<

(ostream & os,

const cdemo & d)

cdemo cdemo:

:operator++

(int

)cdemo & cdemo:

:operator++()

cdemo operator--

(cdemo & d,

int)

cdemo & operator--

(cdemo & d)

intmain()

寫《運算子過載的時候發現乙個問題,就是第二個引數對cdemo 的引用必須是常引用,不加const編譯不過,使用的是dev,有點納悶
ostream &operator <<

(ostream & os,cdemo & d)

自增自減運算子

自增自減運算子 i 先使用i,然後i i 1 i 先使用i,然後i i 1 i 先i i 1然後使用i i 先i i 1 然後使用i 以下使用vc下除錯的結果,不同的編譯器可能有不同的結果。i 3 例1printf d i 結果輸出4 例2printf d i 結果輸出3 例3printf resu...

自增 ,自減 運算子

自增1運算子記為 其功能是使變數的值自增1。自減1運算子記為 其功能是使變數值自減1。自增1,自減1運算子均為單目運算,都具有右結合性。可有以下幾種形式 i i自增1後再參與其它運算。i i自減1後再參與其它運算。i i參與運算後,i的值再自增1。i i參與運算後,i的值再自減1。在理解和使用上容易...

如何過載自增運算子 和自減運算子

如何過載增量運算子 和 運算子 和 有前置和後置兩種形式,如果不區分前置和後置,則使用operator 或operator 即可 否則,要使用operator 或operator 來過載前置運算子,使用operator int 或operator int 來過載後置運算子,呼叫時,引數int被傳遞給...