2
4

3 に答える 3

4

C++ 標準によると、13.2.1

同じ名前の 2 つの関数宣言は、同じスコープ内にあり、同等のパラメーター宣言を持っている場合、同じ関数を参照します。

これは、名前とパラメーターの型のみが考慮されることを意味します。戻り型ではありません。

戻り値で関数を呼び出し、その戻り値を無視できるため、これは理にかなっています。言語設計者が戻り値の型でオーバーロードを許可した場合、コンパイラは正当なコンテキストでこれらのオーバーロードを解決できなくなります。

于 2013-01-04T02:12:10.720 に答える
2

次の理由により、戻り値の型でオーバーロードできません。

int main() {
   f();  // call to void f
   f();  // call to int returning one
   f();  // call to void
   return 0;
}

すべてあいまいです。

float f() { return 0.0f; }
char  f() { return 'a';  }
int   i = f();

も曖昧です。

于 2013-01-04T02:10:48.210 に答える
1

戻り値の型でオーバーロードすることはできません。パラメータのみ。

于 2013-01-04T02:08:04.887 に答える