C++ c+中含糊不清的定义+;
我不知道为什么f的调用是含糊不清的:/I我知道这三个声明都是可以的,但在这种情况下,这不起作用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;
#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
中复制的任何内容都与此重载相匹配。我实际上认为,这个问题的答案让人感到困惑,这三个问题看起来是明确的: