单选题有如下模板声明:template class A;下列声明中,与上述声明不等价的是(  )。A templateclass T1,class T2 class A;B templateclass T1,typename T2 class A;C templatetypename T1,class T2 class A;D templatetypename T1,T2 class A;

题目
单选题
有如下模板声明:template 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;

参考答案和解析
正确答案: B
解析:
在类模板中,数据类型本身是它的参数,因而是一种参数化类型的类,是类的生成器。对于本题来说,模板形参表中包括类型Tl和T2两个类型参数,D项,T1说明其类型,而T2没有说明其类型,与题干中的模板说明不一致。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

( 25 )有如下模板声明:

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

第2题:

下列对模板的声明,正确的是()。A.templateB.templateC.template

下列对模板的声明,正确的是( )。

A.template<T>

B.template<classT1,T2>

C.template<class T1,classT2>

D.template<class T1;class T2>


正确答案:C
解析:模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

第3题:

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

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

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

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

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


正确答案:A

第4题:

有如下模板声明:

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,其间用逗号分隔。

第5题:

下列是模板声明的开始部分,其中正确的是______ 。A.templateB.template C.templa

下列是模板声明的开始部分,其中正确的是______ 。

A.template<T>

B.template <class T1,T2>

C.template <class T1,class T2>

D.template <class T1;class T2>


正确答案:C
解析:模板声明的语法定义。

第6题:

在如下源代码文件Test.java中, 哪个是正确的类定义?()

A.public class test { public int x = 0; public test(int x) { this.x = x; } }

B.public class Test{ public int x=0; public Test(int x) { this.x = x; } }

C.public class Test extends T1, T2 { public int x = 0; public Test (int x) { this.x = x; } }

D.public class


正确答案:BD

第7题:

下列对模板的声明中,正确的是A.templateB.templateC.template

下列对模板的声明中,正确的是

A.template<T>

B.template<class T1,T2>

C.template<class T1,class T2>

D.tamplate<class T1;class T2>


正确答案:C
解析:本题考核模板的定义。模板定义的类型参数表>中包含一个或多个由逗号分隔的类型参数项,每一项由关键字class后跟一个用户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实际的数据类型代替它。

第8题:

下列是模板声明的开始部分,其中正确的是A.templateB.templateC.template

下列是模板声明的开始部分,其中正确的是

A.template<T>

B.template<class T1,T2>

C.template<class T1,class T2>

D.template<class T1;class T2>


正确答案:C
解析:本题考核模板的声明。模板声明的开始部分为:template类型形参表>。其中,类型形参表>可以包含基本数据类型,也可以包含类类型。类型形参需要加前缀class。如果类型形参多于一个,则每个类型形参都要使用class。形参表中的参数是惟一的,而且至少在函数定义体中出现厂次。形参表中至少有一个形参的类型必须用类型形参表>中的形参来定义。所以只有C选项的声明是正确的。

第9题:

有函数模板声明和一些变量定义如下:

template<class T1,class T2,class T3>T1 sum(T2,T3);

double d1,d2;

则下列调用中,错误的是

A.sum<double,double,double>(d1,d2);

B.sum<double,double>(d1,d2);

C.sum<double>(d1,d2);

D.sum(d1,d2);


正确答案:D

第10题:

下列对模板的声明中正确的是()。A.templateB.templateC.template

下列对模板的声明中正确的是( )。

A.template<T>

B.template<class T1,T2>

C.template<classT1,class T2>

D.template<class T1;class T2>


正确答案:C

更多相关问题