更多“有如下函数模板定义: templateT2plus(T1t1,T3t3){returnt1+t3;} 则以下调用正确的是( )。A.plus ”相关问题
  • 第1题:

    有如下函数模板定义:templateT1 sum(T1 a1) {return(a1+a2+a3);}则

    有如下函数模板定义: template<typename T1,int a2,int a3> T1 sum(T1 a1) { return(a1+a2+a3); } 则以下调用中正确的是( )。

    A.sum<int,4,3>(5);

    B.sum<4,3>(5);

    C.sum<int,int,int>(5);

    D.sum(5);


    正确答案:A

  • 第2题:

    有如下函数模板定义: 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,这是允许的。

  • 第3题:

    有如下函数模板定义:templateT1 sum(T1 a1){return(a1+a2+a3);}则以

    有如下函数模板定义: template<typename T1,int a2,int a3> T1 sum(T1 a1) { return(a1+a2+a3); } 则以下调用中正确的是

    A.sum<int,4,3>(5);

    B.sum<4,3>(5);

    C.sum<int,int,int>(5);

    D.sum(5);


    正确答案:A
    解析:本题考核函数模板的使用。C++中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参中;函数模板含有常规形参。题中定义的函数模板中含有常规形参,常规形参的信息无法从模板函数的实参表中获得,因此在调用时必须显式地给出对应于常规参数的模板实参。注意,sum的第一个模板实参的信息可以从模板函数的实参表中获得,但由于它位于不可省略实参的前面,因此不能省略,所以只有A选项的调用格式是正确的。

  • 第4题:

    有如下函数模板定义:templateT2 plus(T1 t1, T3 t3){retu

    有如下函数模板定义: 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,这是允许的。

  • 第5题:

    有如下函数模板定义:templateT1 sam(T1 a1){return(al+a2+a3);}则以

    有如下函数模板定义: template<typename T1,int a2,int a3> T1 sam(T1 a1) { return(al+a2+a3); } 则以下调用中正确的是

    A.sum<int,4,3>(5);

    B.sum<4,3>(5);

    C.sum<int,int,int>(5);

    D.sam(5);


    正确答案:A
    解析:本题考核函数模板的使用。C++中对函数模板的调用有时候只使用了函数实参,而没有使用模板实参,模板实参都被省略了,但模板实参的省略并不是必然的,而是有条件。模板实参不能省略的情况有:从模板函数实参表获得的信息有矛盾:需要获得特定类型的返回值,而不管参数的类型如何:虚拟类型参数没有出现在模板函数的形参中:函数模板含有常规形参。题中定义的函数模板中含有常规形参,常规形参的信息无法从模板函数的实参表中获得,因此在调用时必须显式地给出对应于常规参数的模板实参。注意,sum的第一个模板实参的信息可以从模板函数的实参表中获得,但由于它位于不可省略实参的前面,因此不能省略,所以只有A选项的调用格式是正确的。