A-A+

有如下函数模板的定义: template <class T> T func(T x T y)

2022-08-06 05:37:29 问答库 阅读 176 次

问题详情

有如下函数模板的定义: template <class T> T func(T x,T y){ return x*x+y*y;} 在下列对func的调用中不正确的是
A.func(3,5);
B.func<>(3,5);
C.func(3,5.5);
D.func<int>(3,5.5);请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:C
解析:本题考核函数模板的使用。对于C选项,编译系统从3获得的信息是“T对应于int”,从5.5处获得的信息是“T对应于double”,二者相互矛盾,在编译时会产生错误。对于D选项中紧跟在函数名后的<int>就是模板实参表,通过它通知编译系统在调用过程中,double型的参数5.5将被自动换成int型。

考点:函数,定义