我很困惑为什么为下面的代码段调用方法1而不是方法2?方法2中的参数数量与调用完全匹配,那么为什么不调用method2?
bool addOraclePolygonFeatures(long l, int i=2)
{
//method 1
cout<<"method1\n";
return true;
}
// Function 2
bool addOraclePolygonFeatures(int i)
{
//method 2
cout<<"method2\n";
return true;
}
int main()
{
long l=4;
int i=3;
addOraclePolygonFeatures(l);
}
答案 0 :(得分:3)
调用方法1是因为它完全匹配;方法2需要向下倾斜。
答案 1 :(得分:2)
l 类型长,这就是调用 function 1 的原因。其他参数将具有默认值以与函数1 匹配。 并且 function 2 具有参数类型 int ,其调用函数的参数( viz类型为long )必须为垂头丧气并且在该过程中一些数据可能会丢失。
答案 2 :(得分:1)
因为方法2与提供的参数(long)最匹配,所以第二个参数是默认参数意味着当你调用时我的值为2
addOraclePolygonFeatures(long l, int i=2)
具有一个参数的函数。如果你用两个参数调用addOraclePolygonFeatures,i的值将被覆盖。
答案 3 :(得分:0)
您正在使用单个long
调用函数。您有两个候选人:一个考虑int
,另一个考虑long
和int
。单个int
的匹配不是最佳匹配,因为如果传入的数字太大而无法容纳int
,则可能会丢失数据。