我无法找出为什么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;
}
答案 0 :(得分:1)
我知道这三个声明都没问题
如何?所有参数都可以转换为int
。模糊性很明显。
您认为int x = rc;
无法编译吗?
我认为你的困惑源于void f(int);
。由于参数是按值传递,因此可以在新int
中复制的任何内容都会匹配此重载。