有如下函数模板声明: template<typename T> T Max(T a,T b){return(a>=b)? a:b;} 下列对函数模板Max( )的调用中错误的是

admin2013-02-27  23

问题 有如下函数模板声明:
   template<typename T>
   T Max(T a,T b){return(a>=b)? a:b;}
   下列对函数模板Max( )的调用中错误的是

选项 A、Max(3.5,4.5)
B、Max(3.5,4)
C、Max<double>(3.5,4.5)
D、Max<double>(3.5,4)

答案B

解析 本题考核函数模板的使用。引用模板函数和引用一般的函数在语法形式上没有任何区别。所有的类型替换都是编译器在幕后悄悄进行的。但是要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确定是否匹配函数模板中对应的形参。例如,本题中的B选项,编译系统从第一个参数"3.5"获得的信息是"T对应于double",而从第二个参数"4"处获得的信息是"T对应于int",二者相互矛盾,在编译时会产生错误。对于D选项中紧跟在函数名后的<double>就是模板实参表,通过它通知编译系统在调用过程中,将int型的参数"4"将换成double型。
转载请注明原文地址:https://kaotiyun.com/show/adVp777K
0

最新回复(0)