有如下函数模板定义: template<typename T1,typename T2 typename T3> T2 plus(T1 t1, T3 t3){return t1+t3;} 则以下调用中正确是

admin2013-02-27  21

问题 有如下函数模板定义:    template<typename T1,typename T2 typename T3>    T2 plus(T1 t1, T3 t3){return t1+t3;}    则以下调用中正确是

选项 A、plus(3,5L);
B、plus<>(3,5L);
C、plus<int>(3,5L);
D、plus<int, double>(3,5L);

答案D

解析 本题考核函数模板的使用。C++中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中虚拟类型参数T2没有出现在模板函数的形参列表中,所以在调用时不能省略,D选项的调用省略了T3,这是允许的。
转载请注明原文地址:https://kaotiyun.com/show/t4Vp777K
0

最新回复(0)