有如下的運算符重載函數(shù)定義: double operator +(int i,int k){return double(i+k);} 但定
有如下的運算符重載函數(shù)定義: double operator +(int i,int k){return double(i+k);} 但定義有錯誤,對這個錯誤最準確的描述是
A.+只能作為成員函數(shù)重載,而這里的+是作為非成員函數(shù)重載的
B.兩個int型參數(shù)的和也應該是int型,而這里將+的返回類型聲明為double
C.沒有將運算符重載函數(shù)聲明為某個類的友元
D.C++已經提供了求兩個int型數(shù)據(jù)之和的運算符+,不能再定義同樣的運算符
正確答案:D解析:本題考查的是運算符重載。在C++中,不能作為非成員函數(shù)重載的運算符只有=、[]、()、->以及所有的類型轉換運算符,因此選項A不正確。運算符重載對于返回值的類型并沒有限制,因此選項B也不正確。將運算符重載函數(shù)聲明為某個類的友元的目的是方便該函數(shù)訪問類的私有和保護成員,C++并不強制要求非成員重載的運算符一定是某個類的友元,因此選項C也不正確。運算符重載也是一種函數(shù)重載,兩個重載的函數(shù)至少要在參數(shù)個數(shù)或參數(shù)類型上有所不同,否則C++編譯器就無法區(qū)分它們。因此,題目中重載的+運算符的兩個參數(shù)都是int
詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域專業(yè)人士。