0

fの呼び出しがあいまいな理由がわかりません:/ 3つの宣言は問題ないことはわかっていますが、この場合は機能しません。

#include <iostream>

using namespace std;
void f(int);
void f(int &);
void f(const int &);

void f(int a);

void f(int &a);

   void f(const int &a);


int main()
{
    int i=1;
    const int ic=2;
    int &ri=i;
    const int & rc=ic;

    f(i);
    f(ic);
    f(ri);
    f(rc);

    return 0;
}
4

1 に答える 1

1

私は3つの宣言が大丈夫であることを知っています

どのように?すべての引数はに変換可能intです。あいまいさは明らかです。

int x = rc;コンパイルされないと思いますか?

あなたの混乱はから生じていると思いますvoid f(int);。パラメータは値によって渡されるため、newでコピーできるものはすべて、intこのオーバーロードに一致します。

于 2012-04-17T09:54:21.323 に答える