1. ホーム
  2. c++

[解決済み] 戻り値の型によるオーバーロード

2023-03-26 06:19:36

質問

このトピックについて、SOでいくつかの質問を読みましたが、私にはまだ混乱しているようです。私はC++を学び始めたばかりで、まだテンプレートや演算子オーバーロードなどを勉強していません。

今、オーバーロードする簡単な方法はありますか?

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

を使えば、テンプレートやおかしな挙動をすることはないでしょう。

class My {
public:
    int get_int(int);
    char get_char(int);
}

?

どのように解決するのですか?

いいえ、そうではありません。戻り値の型に基づいたメソッドのオーバーロードはできません。

オーバーロードの解決には 関数のシグネチャ . 関数シグネチャは以下のもので構成されます。

  • 関数名
  • cv-qualifiers
  • パラメータの種類

そして、ここからが引用です。

1.3.11 の署名

オーバーロードの解決 (13.3) に参加する関数に関する情報です。 パラメータタイプリスト (8.3.5)と 関数がクラスメンバである場合,関数自身とメンバが属するクラスの CV-限定詞 (もしあれば) 関数自身と,そのメンバ関数が宣言されているクラスに対する CV-限定子(もしあれば).[...]

オプションです。

1) メソッド名を変更する。

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

2)アウトパラメータ

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

3) テンプレート...この場合はやりすぎ。