c 過載前置 和

2021-09-07 09:32:42 字數 953 閱讀 6684

c語言中,前置和後置++,--都不能作為左值,而在c++中,前置的++和--可以作為左值,從下面的過載運算子中也可以看出,它們返回的是引用,我不知道為什麼這裡和c語言中不同,但c++類似的提公升還有三目運算子?:,在c中也不可以做左值,但c++中可以。或者是因為c++提出了引用,進而對c做了一定的提公升吧。

過載前置++和--,分別採用成員函式和全域性函式的方式實現,**如下:過載運算子的行為應該和內建型別一致,所以前置的++、--應該返回引用。

1.賦值(=)、下標()、呼叫和成員訪問箭頭(->)運算子必須是成員函式;

2.復合賦值運算子一般來說應該是成員,但並非必須,這一點與賦值運算子略有不同;

3.改變物件狀態的運算子或者與給定型別密切相關的運算子,如遞增、遞減和解引用運算子,通常應該是成員(上述**只是為了複習訓練一下全域性函式和成員的分別實現,所以沒有遵循這條規則);

4.具有對稱性的運算子可能轉換任一端的運算物件,例如算術、相等性、關係和位運算子等,因此它們通常應該是普通的非成員函式。

總結下來就是,只用記住第四點,其他情況都用成員函式的方式。

前置 和後置 過載

1 前置 過載時沒有引數 而後置 過載時有引數。不會使用其引數,僅僅是區分用。可以理解為前置 後面有引數了,所以不需要引數 i 對應 operator i 對應 operator int 2 前置 需要返回引用 因為過載自加運算子後可以返回物件的引用,以方便在表示式中連續使用。而後置 返回的不是引用...

過載 前置 與後置

過載 前置 與後置 不同於普通的雙目運算子 自增自減運算子 在過載的時候需要額外留意區分是前置式還是後置式。現行的處理方法是,作為成員函式的 前置 不接受任何引數,而後置 接受乙個int型別的引數,儘管沒什麼實際用途,但是卻為編譯器確定過載物件提供了幫助。除了區分的時候需要注意,他們的行為也是有所區...

過載運算子 前置 和後置

1 為區別前置和後置運算子,需要在後置運算子函式中加引數 int 雖然這個型別在此除了以示區別之外並不代表任何實際含義 2 前置返回的是變數的引用,後置返回的是常量。所以 c合法,而c 不合法,這一點可以在vc 6.0和dev c 中採用基本資料型別的 操作來驗證 3 為什麼不讓c 也合法呢?如果要...