1,運算符重載:重新解釋對象間運算的運算符含義。
注意:重載後的運算符只能應用於對象間的運算。
運算符重載主要有兩種形式:(1),成員函數形式,(2),友元函數形式。除這兩中形式外,運算符還可以重載爲一般的函數形式,但這種方法一般不常用。,
2,C++中不可重載的運算符:
(1). 成員訪問運算符
(2).* 成員指針運算符
(3):: 限定運算符
(4)?: 三目運算符
(5)sizeof 類型空間長度測試運算符
3,運算符重載的定義形式
(1).成員函數重載運算符的一般形式
<返回類型> <類名> :: operator <重載的運算符>(參數列表)
{
函數體;
}
注意:?= 、[ ] 、( ) 、-> 以及所有類型轉換運算符只能作爲成員函數重載。如果第一操作數不是同類對象,而是其他數據類型,則只能作爲非成員成員函數重載。
(2),友元函數重載運算符的一般形式
friend <返回類型> operator <重載運算符> (參數列表)
{
函數體;
}
注意:友元函數不能重載 ?= 、[ ] 、( ) 、->
4,
(1),用類的成員函數重載運算符時,由於有this傳遞參數(對象),對於單目運算符,實現它的成員函數不能有參數,對於雙目運算符,只能有一個參數。
(2),使用友元運算符函數比成員函數靈活,如果重載運算符左邊的參數是非類的對象,則只能使用友元函數重載。
注意:
(1),對於大對數雙目運算符來說,用友元函數重載運算符比成員函數適應性強。
(2),雖然賦值運算符是雙目運算符,但爲防止出現二義性,賦值運算符應重載爲成員函數。
(3),單目運算符 ++ 、— 、以及下標運算符 () 、[ ] 、等一般應重載爲成員函數。
(4),輸入運算符 >> 和輸出運算符 << 必須重載爲友元函數。