首页 > 试题广场 >

假设声明了以下的函数模板: template T

[单选题]
假设声明了以下的函数模板:
template<class T>
T max(T x,T y) {
    return x > y ? x : y;
} int ichar c
则下面错误的调用语句是()
  • max(i,i);
  • max(c,c);
  • max((int)c,i);
  • max(i,c);
template<class T>
T max(T x,T y)
{ 
    return(x>y)?x:y;
}
这个函数模板只有一个类型参数T,所以传给max函数的实参类型得要一致。只有D选项两者的类型不一致。
如果要传不同参数进去,可以:
template<class T_1, class T_2>
T_1 max(T_1 x,T_2 y)
{ 
    return(x>y)?x:y;
}



发表于 2020-09-21 14:55:30 回复(0)
一定要是相同类型吧
发表于 2018-05-10 12:01:25 回复(0)
函数模板只有一个类型参数,所以传给函数的实参类型要一致。
发表于 2023-06-01 16:14:12 回复(0)
需要同一个类型才能进行比较大小
发表于 2022-04-07 19:11:23 回复(0)
函数模板只有一个类型参数,所以传给函数的实参类型要一致。
发表于 2022-03-05 16:10:59 回复(0)
如若提升也应全部提升
发表于 2020-09-05 01:09:44 回复(0)
A,B,C选项中传入的参数类型都一致。D不一致,故错。
发表于 2020-05-29 21:33:39 回复(0)
因为模板中是同类型
发表于 2020-04-18 13:25:30 回复(0)
因为有了两种转换方法,chat转化为int,或int 转化为char,因此存在二义性,故错误
发表于 2019-03-19 21:55:54 回复(0)