首页 > 试题广场 >

有如下模板定义:template class ...

[单选题]
有如下模板定义:
template <class T>T fun(T x,T y){return x*x+y*y;}
在下列对 fun 的调用中,错误的是:
  • fun(2,8)
  • fun(2.0,8.2)
  • fun(2.3,8)
  • fun<float>(2,8.3)
函数模板,传入的都是同类型的话,会自动转换获取类型T; 当传入的类型不同,一定要使用声明<类型>放在函数名和()之间,告诉函数模板应该转换什么类型; 但传入的类型不同,但又没有类型声明,那不好意思,编译器不知道该怎么转了,也就出错了。
发表于 2021-01-10 08:54:17 回复(0)
<p>在模版函数中,两个参数的类型必须是一样的</p>
发表于 2020-08-16 13:13:44 回复(0)
函数模板调用时注意1、如果利用自动类型推导,不会发生隐式类型转换2、如果利用显示指定类型,可以发生隐式类型转换
发表于 2021-04-13 23:43:28 回复(0)
只有一个参数的函数模板,传入的都是同类型的话,会自动转换类型;传入不同时,使用声明<类型>,放在函数名和()之间,告诉函数模板转换什么类型。
发表于 2022-03-05 16:41:49 回复(0)
d是啥意思?
发表于 2021-01-03 17:42:56 回复(0)
类型不同,必须声明
发表于 2023-09-22 16:13:41 回复(0)
D是对的,fun<float>(2, 8.3)是合法的调用。根据模板定义,T被推断为float类型,因此fun函数的参数x和y都是float类型。在调用fun时,2会被隐式转换为float类型,所以参数x的类型是float,而8.3本身就是float类型,所以参数y的类型也是float。因此,fun<float>(2, 8.3)是合法的调用,并且返回值类型也是float。</float></float>
发表于 2023-07-09 18:17:40 回复(0)
TMD,问GPT全是错误的
发表于 2024-03-14 10:51:37 回复(0)
只有一个参数的函数模板,传入的都是同类型的话,会自动转换类型;传入不同时,使用声明<类型>,放在函数名和()之间,告诉函数模板转换什么类型。
发表于 2024-03-04 10:38:53 回复(0)
函数模板传入的是同类型的话,T会自动获取类型,如果传入的参数类型不一致,一定要使用声明,不然编译器无法识别出具体用什么类型
发表于 2023-07-19 21:03:35 回复(0)
函数模板,传入的都是同类型的话,会自动转换类型;传入不同时,使用声明:类型,放在函数名和()之间,告诉函数模板应该转换什么类型。
发表于 2022-02-10 09:57:09 回复(0)