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