Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中含糊不清的定义+;_C++_Call_Ambiguous - Fatal编程技术网

C++ c+中含糊不清的定义+;

C++ c+中含糊不清的定义+;,c++,call,ambiguous,C++,Call,Ambiguous,我不知道为什么f的调用是含糊不清的:/I我知道这三个声明都是可以的,但在这种情况下,这不起作用 #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;

我不知道为什么f的调用是含糊不清的:/I我知道这三个声明都是可以的,但在这种情况下,这不起作用

#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;
}
#包括
使用名称空间std;
无效f(int);
空f(int&);
void f(const int&);
无效f(INTA);
无效f(内部和外部);
无效f(常数int&a);
int main()
{
int i=1;
常数int ic=2;
int&ri=i;
常数int&rc=ic;
f(i);
f(ic);
f(ri);
f(rc);
返回0;
}
我知道这三个声明是可以的

怎么做?所有参数都可以转换为
int
。模棱两可是显而易见的

你认为
intx=rc不会编译吗


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

我实际上认为,这个问题的答案让人感到困惑,这三个问题看起来是明确的: