1 回答

TA貢獻(xiàn)35條經(jīng)驗(yàn) 獲得超18個(gè)贊
運(yùn)算符重載的一個(gè)要求,若運(yùn)算符所需的操作數(shù)(尤其第一個(gè)操作數(shù))希望有隱式類(lèi)型轉(zhuǎn)換,則只能選用友元函數(shù)。例如,一個(gè)復(fù)數(shù)類(lèi)Complex的+的重載(它有個(gè)構(gòu)造函數(shù)為Complex(double r=0.0,double i=0.0):real(r),imag(i){})。若+重載為友元函數(shù),5.0+c1可以直接使用,因?yàn)镃omplex的構(gòu)造函數(shù)使得實(shí)數(shù)可以被隱式轉(zhuǎn)換為Complex的類(lèi)型,這樣5.0+c1就會(huì)以operator+(Complex(5.0)+c1)的方式來(lái)執(zhí)行,同理c1+0.5也一樣。而若+重載為成員函數(shù),則左操作數(shù)必須要求為Complex類(lèi)型,不能是實(shí)數(shù)(因?yàn)檎{(diào)用成員函數(shù)的目的對(duì)象不會(huì)被隱式轉(zhuǎn)換),只有右操作數(shù)可以是實(shí)數(shù)(右操作數(shù)是函數(shù)的參數(shù),可以隱式轉(zhuǎn)換),即c1+5.0可以,但是5.0+c1會(huì)報(bào)錯(cuò)。
- 1 回答
- 0 關(guān)注
- 1338 瀏覽
添加回答
舉報(bào)