示例:實現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...