c 之遞增運算子過載

2022-06-11 18:36:10 字數 1089 閱讀 1670

#includeusing

namespace

std;

class

myinteger

//過載++i運算子

//返回引用是為了對同乙個資料進行遞增操作

myinteger & operator++()

//過載i++運算子,int是佔位符,後置遞增要返回值

myinteger operator++(int

) private

:

intnum;

};ostream & operator

<

void

test()

void

test2()

intmain()

說明:1.如果

myinteger & operator++()
這裡返回的是myinteger而不是引用myinteger &,在呼叫test()時,會輸出:

也就是沒有達到++i類似的效果:先計算,後賦值。這是因為,當執行一遍++myinteger後,再執行++(++myinteger) ,此時這裡的(++myinteger)已經不再是原來的myinteger物件了,所以++(++myinteger) 的結果是2,而myinteger的結果是1,因此採用&,操作的就是同乙個物件。這之後再呼叫test(),輸出為:

要想實現另外一種自增,即i++,先賦值,後計算,就需要過載自增函式,只需要向過載函式中傳入int佔位符即可。同時,在函式裡面,先要記錄當前的值,再進行++,最後返回原先記錄的值,這裡返回的不能是引用,因為假設我們返回的是引用,相當於返回的是tmp的引用,而tmp是乙個區域性變數,在函式執行完後就會釋放,此時再去訪問該位址,就不合法了。最後呼叫test2(),輸出為:

C 遞增運算子過載

作用 通過過載遞增運算子,實現自己定義的資料型別 如下 include using namespace std 過載遞增運算子 自定義型別 class myinteger 過載前置 運算子 返回引用是為了一直對乙個資料進行遞增操作 myinteger operator 過載後置 運算子 這個int代...

C 的遞增運算子過載

用途 主要用來實現自義定資料型別的遞增 實現遞增過載前,為了可以cout直接輸出自定義資料型別先實現一下左移運算子 的遞增。include include using namespace std class myintger myintger myintger args myintger myint...

12 5 3 遞增運算子過載

示例 實現person類的年齡自增1。建立類並且過載左移運算子 class person string m name int m age ostream operator ostream cout1,const person p 1 前置遞增 如果遞增運算子過載完成,寫出來應該是這樣的 person...