0

我不知道为什么 f 的调用是模棱两可的:/我知道这三个声明都可以,但在这种情况下这不起作用..

#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

我知道这三个声明都可以

如何?所有参数都可以转换为int. 歧义很明显。

你认为int x = rc;不会编译?

我认为您的困惑源于void f(int);. 由于参数是按值传递的,因此可以在 new 中复制的任何内容都int与此重载匹配。

于 2012-04-17T09:54:21.323 回答