天天看點

C++複習小知識點總結(四)

一:C++運算符重載

1:函數重載(Function Overloading)可以讓一個函數名有多種功能,在不同情況下進行不同的操作。運算符重載(Operator Overloading)也是一個道理,同一個運算符可以有不同的功能。

2:運算符重載是通過函數實作的,它本質上是函數重載。

運算符重載函數除了函數名有特定的格式,其它地方和普通函數并沒有差別。

運算符重載函數不僅可以作為類的成員函數,還可以作為全局函數

3:重載注意事項:

1) 并不是所有的運算符都可以重載。能夠重載的運算符包括:

加,減 ‘* ’ / % ^ & | ~ ! = < > += -= = /= %= ^= &= |= << >> <<= >>= == != <= >= && || ++ – , ->* -> () [] new new[] delete delete[]

2)[]是下标運算符,()是函數調用運算符。自增自減運算符的前置和後置形式都可以重載。長度運算符sizeof、條件運算符: ?、成員選擇符.和域解析運算符::不能被重載。

3)重載不能改變運算符的優先級和結合性。

4)重載不會改變運算符的用法,原有有幾個操作數、操作數在左邊還是在右邊,這些都不會改變。例如~号右邊隻有一個操作數,+号總是出現在兩個操作數之間,重載後也必須如此。

5) 運算符重載函數既可以作為類的成員函數,也可以作為全局函數。

将運算符重載函數作為類的成員函數時,二進制運算符的參數隻有一個,一進制運算符不需要參數

将運算符重載函數作為全局函數時,二進制操作符就需要兩個參數,一進制操作符需要一個參數,而且其中必須有一個參數是對象,好讓編譯器區分這是程式員自定義的運算符,防止程式員修改用于内置類型的運算符的性質。

将運算符重載函數作為全局函數時,一般都需要在類中将該函數聲明為友元函數。原因很簡單,該函數大部分情況下都需要使用類的 private 成員。

箭頭運算符->、下标運算符[ ]、函數調用運算符( )、指派運算符=隻能以成員函數的形式重載。

運算符重載參考:

普通運算符:

http://c.biancheng.net/view/2311.html

“<<” ">>"運算符

http://c.biancheng.net/view/2309.html

重載[](下标運算符)

http://c.biancheng.net/view/2312.html

繼續閱讀