【发布时间】:2018-03-02 10:05:12
【问题描述】:
在下面的代码 sn-ps 中,在函数调用 f(1) 中,1 是 int 类型的文字,在第一个函数中 void f(double d) 参数类型是 double 和第二个函数 void f(short int i) 参数类型是短整数。
这里1是int类型不是double类型,那么为什么编译器会产生歧义错误?
#include <iostream>
using namespace std;
void f(double d) // First function
{
cout<<d<<endl;
}
void f(short int i) // Second function
{
cout<<i<<endl;
}
int main()
{
f(1); // 1 is a literal of type int
return 0;
}
【问题讨论】:
-
即“1 是 int 类型,short int 也是 int 类型”是不正确的说法。
-
int和short int是不同的类型。short不是int的某种限定符
标签: c++ c++14 overloading short ambiguous