過載前置操作符和後置操作符

2022-08-30 13:51:11 字數 1256 閱讀 9615

i++; //

i的值作為返回值,i自增1

++i; //

i自增1,i的值作為返回值

現代編譯器產品會對**進行優化

優化使得最終的二進位制程式更加高效

優化後的二進位制程式丟失了c/c++的原生語義

不可能從編譯後的二進位制程式還原c/c++程式

++操作符可以被過載

全域性函式和成員函式均可以進行過載

過載前置++操作符不需要額外的引數

過載後置++操作符需要乙個int型別的佔位引數

class

test

intget_value()

//過載++(前置)操作符 (前置++效率高點,因為沒有生成額外的物件)

test& operator ++()

//過載++(後置)操作符

test operator ++(int

)

};

對於基礎型別的變數,前置++的效率與後置++的效率基本相同,我們需要根據專案組編碼規範進行選擇

對於類型別的物件,前置++的效率高於後置++,盡量使用前置操作符來提高程式的效率

2

//前置和後置操作符.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。3//

4 #include 5 #include

6using

namespace

std;

7class

test815

intget_value()

1619

//過載++(前置)操作符 (前置++效率高點,因為沒有生成額外的物件)

20 test& operator ++()

2127

//過載++(後置)操作符

28 test operator ++(int)29

36};

37int

main()

38

執行結果:

t.mvalue=0

t.mvalue=1

tt.mvalue=1

tt.mvalue=1

編譯優化使得最終的可執行程式更加高效

前置++操作符和後置++操作符都可以被過載

++操作符的過載必須符合原生語義

對於基礎型別,前置++與後置++的效率幾乎相同

對於類型別,前置++的效率高於後置++

前置操作符和後置操作符

操作符可以被過載 全域性函式和成員函式均可以進行過載 過載前置 操作符不需要額外的引數 過載後置 操作符需要乙個int型別的佔位引數 來看乙個例子 include include using namespace std class test intvalue test operator test o...

40 前置操作符和後置操作符

下面的 有區別嗎?進入彙編 i i 的值作為返回值,i自增1 i i自增1,i的值作為返回值 include include using namespace std int main int value test operator 過載前置 操作符 test operator int 過載後置 操作...

40 前置操作符和後置操作符

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 值得思考的問題 1 下面的 有沒有區別?為什麼?i i 的值作為返回值,i自增1。i i自增1,i的值作為返回值test.cpp include using namespa...