有如下模板声明:template<typename T1,typename 12>class A;下列声明中,与上述声明不等价的是A.template<class T1,class T2>class A;B.template<class T1,typename T2>class A;C.template<typename TI,class T2>class A;D.template<typename T1,T2>class A;

题目

有如下模板声明:

template<typename T1,typename 12>class A;

下列声明中,与上述声明不等价的是

A.template<class T1,class T2>class A;

B.template<class T1,typename T2>class A;

C.template<typename TI,class T2>class A;

D.template<typename T1,T2>class A;


相似考题
参考答案和解析
正确答案:D
解析:定义函数模板时可以使用多个类型参数,这时每个类型参数前面都要加上关键字class或typename,其间用逗号分隔。
更多“有如下模板声明:template&lt;typename T1,typename 12&gt;class A;下列声明中,与上述声明不等价 ”相关问题
  • 第1题:

    关于关键字class和typename,下列表述中正确的是( )。

    A.程序中的typename都可以替换为class

    B.程序中的class都可以替换为typename

    C.在模板形参表中只能用typename来声明参数的类型

    D.在模板形参表中只能用class或typename来声明参数的类型


    正确答案:A
    解析:在模板中,定义模板类型templateclassT>和templatetypenameT>都是一样的,有时用class容易引起混淆,所以在标准化时引入了关键字typename。

  • 第2题:

    下列关于模板的叙述中,错误的是

    A.调用模板函数时,在一定条件下可以省略模板实参

    B.可以用int、double这样的类型修饰符来声明模板参数

    C.模板声明中的关键字class都可以用关键字typename替代

    D.模板的形参表中可以有多个参数


    正确答案:C
    解析:在有typename的地方可以用class来代替,但是在有class的地方不一定能用typename代替,如:
      Templaeclass类型参数>class类名{ }后面的那个class是不能用typename代替的。

  • 第3题:

    有如下模板声明: templateclassA; 下列声明中,与上述声明不等价的是( )。

    A.templateclassA;

    B.templateclassAt

    C.templateclassA;

    D.templateclassA;


    正确答案:D
    D。【解析】模板形参有typename<参数名>、class<参数名>、<类型修饰><参数名>3种形式,即typename与class通用。

  • 第4题:

    关于关键字class和typename,下列表述中正确的是( )。 A. 程序中的typename都可以替换为classS

    关于关键字class和typename,下列表述中正确的是( )。

    A. 程序中的typename都可以替换为class

    B.程序中的class都可以替换为typename

    C.在模板形参表中只能用{ypename来声明参数的类型

    D.在模板形参表中只能用class或typenanle来声明参数的类型


    正确答案:A
    程序中的typename都可以替换为class,但程序中的class不可以全部替换为typename。在模板类型形参中除了typename和class以外,也可以用常规类型来声明参数的类型,所以C、D选项错误。

  • 第5题:

    有如下模板声明:templateclass A;下列声明中,与上述声明不等价的是A.t

    有如下模板声明: template<typename T1,typename T2>class A; 下列声明中,与上述声明不等价的是

    A.template<class T1,class T2>class A;

    B.template<class T1,typename T2>class A;

    C.template<typename T1,class T2>class A;

    D.template<typename T1,T2>class A;


    正确答案:D
    解析:在模板定义中,一般情况下,class和typename可以互换。在选项D中,T2没有类型参数限制定义,所以和题干给出的定义不同。