有如下函数模板定义: template <class T> T func(T x, T y){return x*x*y*y;) 在下列对func的调用中,错误的是

admin2010-12-16  29

问题 有如下函数模板定义:    template <class T>    T func(T x, T y){return x*x*y*y;)    在下列对func的调用中,错误的是

选项 A、func(3,5);
B、func(3.0,5.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型。
转载请注明原文地址:https://jikaoti.com/ti/YsW0FFFM
0

最新回复(0)