itgle.com

有如下函数模板定义: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);

题目
有如下函数模板定义: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选项的调用格式是正确的。
更多“有如下函数模板定义:template<typename T1,int a2,int a3>T1 sam(T1 a1){return(al+a2+a3);}则以 ”相关问题
  • 第1题:

    若MCS-51的所有中断源均处于同一优先级,则它们按自然优先级从高到低的顺序是()

    A.INT0、T0、INT1、T1、串行口

    B.T0、INT0、T1、INT1、串行口

    C.T0、T1、INT0、INT1、串行口

    D.INT0、T0、INT1、T1


    INT0 、 T0 、INT1 、 T1 、串行口

  • 第2题:

    当中断优先级寄存器IP=00010000B时,8051单片机响应中断的顺序为()。

    A./INT0, T0, /INT1, T1, 串行口

    B.T0, /INT0, /INT1, T1, 串行口

    C./INT1, /INT0, T0, T1, 串行口

    D.串行口, /INT0, T0, /INT1, T1


  • 第3题:

    1、按下列中断优先顺序排列,有可能实现的有()。

    A.T1、T0、INT0、INT1、串行口

    B.INT0、T0、INT1、T1、串行口

    C.INT0、INT1、串行口、T0、T1

    D.INT1、串行口、TO、INTO、T1


    T1、T0、 、串行口

  • 第4题:

    若同时定义了下列四个选项格式的函数和模板,fun(8,3.1)调用的是()

    A.template<class T1,class T2)fun(T1,T2)

    B.fun(double,int)

    C.fun(double,int)

    D.fun(double,char)


    template

  • 第5题:

    处于同一级别的5个中断源同时请求中断时,CPU响应中断的次序为 。

    A.串行口、T1、INT1、T0、INT0

    B.INT0、T0、INT1、T1、串行口

    C.串行口、INT1、T1、INT0、T0

    D.T0、INT0、T1、INT1、串行口

    E.INT1、T0、T1、串行口


    INT0、T0、INT1、T1、串行口