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