Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++中函数重载,我对函数匹配有疑问。按照我得到的代码运行 错误C2668:“函数”:对重载函数的调用不明确我出错的原因在本文中得到了明确的回答。 数字1.2和2.2是类型double。 当我尝试调用函数(1.2,2)或函数(1,2.2)时,它打印为“int function”。为什么它不给出与上面相同的错误_C++_Function_Overloading - Fatal编程技术网

函数重载的输出不符合预期 我正在学习C++中函数重载,我对函数匹配有疑问。按照我得到的代码运行 错误C2668:“函数”:对重载函数的调用不明确我出错的原因在本文中得到了明确的回答。 数字1.2和2.2是类型double。 当我尝试调用函数(1.2,2)或函数(1,2.2)时,它打印为“int function”。为什么它不给出与上面相同的错误

函数重载的输出不符合预期 我正在学习C++中函数重载,我对函数匹配有疑问。按照我得到的代码运行 错误C2668:“函数”:对重载函数的调用不明确我出错的原因在本文中得到了明确的回答。 数字1.2和2.2是类型double。 当我尝试调用函数(1.2,2)或函数(1,2.2)时,它打印为“int function”。为什么它不给出与上面相同的错误,c++,function,overloading,C++,Function,Overloading,代码: void function(int y,int w) { printf("int function"); } void function(float y,float w) { printf("float function"); } int main() { function(1.2,2.2); return 0; } 当我尝试调用函数(1.2,2)或函数(1,2.2)时,它会打印为“int function”。

代码:

  void function(int y,int w)
    {
      printf("int function");

    }


 void function(float y,float w)
  {
    printf("float function");
  }


int main()
 {
   function(1.2,2.2);
   return 0;
 }
当我尝试调用
函数(1.2,2)
函数(1,2.2)
时,它会打印为“int function”。为什么它不给出与上面相同的错误

因为根据
void函数(inty,intw)的规则
void函数(float y,float w)
更匹配,因此没有歧义


调用
function(1.2,2)
function(1,2.2)
都有一个参数是
int
,并且与
void function(int y,int w)
的一个参数完全匹配,因此只需要一个类型转换,
double
int
void函数(float y,float w)
另一方面需要两次转换
int
float
double
float
,这就是为什么使用
int
重载。

@πῥεῖ: 他提供了一个MCVE,就在链接处。建议重新打开。@YePhIcK:你注意到他的链接了吗?它有所有必要的上下文。@einpoklum来吧,这远远不是@einpoklum问题必须是独立的。这意味着代码必须在问题中,而不是链接。我建议您阅读本文,并了解其中的原因。当您使用int-literal时,编译器可以找到只需要一次转换而不是两次转换的候选函数。一场更好的比赛,他们中只有一个。因此,对于哪一个更好,它不再含糊其辞,它很乐意将double强制为int。