亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

按返回類型過載

按返回類型過載

C++
慕標5832272 2019-07-11 09:25:22
按返回類型過載我在這里讀到了幾個關于這個話題的問題,但這似乎讓我感到困惑。我剛剛開始學習C+,我還沒有學習模板或操作符重載等等。現在有一個簡單的方法來超載嗎?class My {public:     int get(int);     char get(int);}沒有模板或奇怪的行為?還是我應該class My {public:     int get_int(int);     char get_char(int);}?
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

不,沒有。不能基于返回類型重載方法。

重載解析考慮到功能簽名..函數簽名由以下內容組成:

  • 函數名
  • 簡歷-修飾符
  • 參數類型

以下是這段話:

1.3.11簽字

參與過載解析(13.3)的函數的信息:它的參數類型列表(8.3.5),如果函數是類成員,則函數本身和聲明成員函數的類的cv-限定符(如果有的話)。[.]

備選方案:

1)更改方法名稱:

class My {public:
    int getInt(int);
    char getChar(int);};

2)OUT參數:

class My {public:
    void get(int, int&);
    void get(int, char&);}

3)模板.。在這個案子里殺得過火了。


查看完整回答
反對 回復 2019-07-11
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

這是可能的,但我不確定這是否是我推薦給初學者的技術。與其他情況一樣,當您希望函數的選擇取決于如何使用返回值時,可以使用代理;首先定義如下getChargetInt,然后是一個通用的get()它返回這樣的代理:

class Proxy{
    My const* myOwner;public:
    Proxy( My const* owner ) : myOwner( owner ) {}
    operator int() const
    {
        return myOwner->getInt();
    }
    operator char() const
    {
        return myOwner->getChar();
    }};

根據需要將其擴展到多種類型。


查看完整回答
反對 回復 2019-07-11
?
泛舟湖上清波郎朗

TA貢獻1818條經驗 獲得超3個贊

不,不能按返回類型過載;只能按參數類型和Const/Volative限定符過載。

另一種選擇是使用引用參數“返回”:

void get(int, int&);void get(int, char&);

盡管我可能會使用一個模板,或者像第二個例子那樣使用不同名稱的函數。


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關注
  • 465 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號