前自增和後自增運算符的重載

很久以前(八十年代),沒有辦法區分++和--操作符的前綴與後綴調用。這個問題遭到程序員的報怨,於是C++語言得到了擴展,允許重載 increment 和 decrement操作符的兩種形式。然而有一個句法上的問題,重載函數間的區別決定於它們的參數類型上的差異,但是不論是increment或decrement的前綴還是後綴都只有一個參數。爲了解決這個語言問題,C++規定後綴形式有一個int類型參數,當函數被調用時,編譯器傳遞一個0做爲int參數的值給該函數。

increment的前綴形式表示“增加然後取回”,後綴形式表示“取回然後增加”。

 

Sample code:

 

說明

1. 類中的++操作符號重載之後必須保證其語意與全局++相同。

2.爲了區分前後,用++()表示前自增,用++(int)後自增。

3.因爲按照前自增的標準定義,應該支持"++++a"的語法,而且兩次前自增都應該是對a對象的自身操作,如果返回A類型,那第二次前自增調用的是臨時對象的前自增操作。
4.後自增應該返回"const Complex".這可以防止形如"a++++"的用法。

5.一般通過前自增操作來實現後自增操作符函數。

參考
C++ articles:Guru of the Week #4 -- Class Mechantics

More Effective C++

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章