12 5 3 遞增運算子過載

2021-10-07 20:19:32 字數 1097 閱讀 3161

示例:實現person類的年齡自增1。

建立類並且過載左移運算子:

class

person

string m_name;

int m_age;};

ostream&

operator

<<

(ostream& cout1,

const person &p)

1、前置遞增

如果遞增運算子過載完成,寫出來應該是這樣的:

person p

("張三",18

);++p;

可以看到,只有乙個引數,就是我們要遞增的物件。

返回值也應該是person類,這樣才能連續遞增。

過載實現:

person& person::

operator++(

)

返回引用是因為在連續遞增的情況下,如++(++p),我們操作的一直是同乙個物件。

這樣再在main函式呼叫:

int

main()

2、後置遞增

後置遞增的過載,由於函式名稱跟前置遞增一樣,所以必須要形參不同才能過載。系統認定,形參加上佔位引數int就認為是後置遞增,而且必須是int。

由於後置遞增是先返回沒有遞增的物件,再把物件自增1。

這樣的話,就不能返回這個物件本身的引用了,因為返回語句肯定是再函式體最後一行,這樣無論怎麼寫,都是返回自增後的物件。

所以我們要建立乙個臨時物件,把原來的物件自增1,再返回那個臨時物件。

person person::

operator++(

int)

在主函式呼叫:

int

main()

執行結果:

觀察結果可知,與系統內建的遞增功能完全一樣。

C 遞增運算子過載

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

遞增運算子過載(3)

作用 通過過載遞增運算子,實現自己的整型資料 1 自定義整型資料實現 1 include 2 using namespace std 34 class myinteger512 13private 14 intm num 15 1617 因為cout在左邊,所以只能寫在全域性函式 18 過載左移運算...

類和物件 運算子過載 3 遞增運算子過載

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