自增運算子++ ,自減運算子–有前置/後置之分,為了區分所過載的是前置運算子還是後置運算子,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被傳遞給...