重載函數(shù)有如下約束
@ 該組重載函數(shù)中任何兩個都必須有不同的參量表。
@ 具有相同類型參量表、僅在返回值類型上不同的重載函數(shù)會引起錯誤。
@ 成員函數(shù)的重載不能僅基于一個說明為靜態(tài)的,另一個說明為非靜態(tài)的。
@ typedef說明并未定義新的類型,它們僅為已存在的類型引入了一個同義詞。它們不能影響重載機制。
@ 枚舉類型是一些可區(qū)分的類型,故可以區(qū)分重載函數(shù)。
@ 從區(qū)分重載函數(shù)的意義上說,類型“數(shù)組”和“指針”是相同的。對于一維數(shù)組來說是正確的。
運算符重載有如下的約束
@ 運算符要遵守它們同內部類型一起使用所指定的優(yōu)先原則、分組及操作數(shù)的個數(shù)。
@ 單目運算符說明為成員函數(shù)不帶參量;如果說明為全局函數(shù),要帶一個參量。雙目運算符說明為成員函數(shù)只帶一個參量;如果說明為全局函數(shù),要帶兩個參量。
@ 所有的重載運算符除了賦值(operator=)外均可被派生類繼承。
@ 重載運算符的成員函數(shù)的第一個參量總是激活該運算符的對象的類類型參量(運算符被定義的類,或者定義了運算符的類的派生類)。對于第一個參量也不支持轉換。
具體內容:
單目運算符函數(shù)
ret-type operator op()?? ??? ??? ?//成員,使用類型的內部成員
ret-type operator op(arg)?? ??? ?//全局,參數(shù)為對其操作的類型的變量
雙目運算符函數(shù)
ret-type oprator op(arg)?? ??? ?//arg可以為任意類型的變量
ret-type operator op(arg1, arg2)
?? ??? ?//全局,arg1和arg2是參量。至少其中之一必須是操作類類型。
注意:對于雙目運算符的返回類型沒有限制;然而大多數(shù)用戶自定義型雙目運算符返回類類型或類類型的引用。
參考:
C++運算符重載轉換運算符C++運算符重載賦值運算符