通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
有如下函数模板:template<class T> T square(T x){return x*x;}其中T是
函数形参
函数实参
模板形参
模板实参
第2题
关于模板,下列说法不正确的是
用类模板定义一个对象时,不能省略实参
类模板只能有虚拟类型参数
类模板本身在编译中不会生成任何代码
类模板的成员函数都是模板函数
第3题
如果一个模板声明列出了多个参数,则每个参数之间必须用逗号隔开,每个参数都必须使用()关键字来修饰。
const
static
void
class
第4题
()使一个函数可以定义成对许多不同数据类型完成同一个任务。
函数模板
重载函数
递归函数
模板函数
第5题
有如下函数模板:template<typename T, typename U> T cast(U u){ return u; }其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是
cast(i);
cast<char*,int>(i);
cast<double,int>(i);
第6题
有如下函数模板定义:template<typename T1,int a2,int a3> T1 sum(T1 a1){ return(a1+a2+a3); }则以下调用中正确的是
sum<int,4,3>(5);
sum<4,3>(5);
sum<int,int,int>(5);
sum(5);
第7题
下列关于模板的叙述中,错误的是
模板声明中的第一个符号总是关键字template
在模板声明中用括起来的部分是模板的形参表
类模板不能有数据成员
在一定条件下函数模板的实参可以省略
第8题
有如下函数模板定义:template<class T> T func(T x,T y){ return x*x+y*y; }在下列对func的调用中,错误的是
func(3,5);
func(3.0,5);
func(3,5.5);
第9题
第10题
关于在调用模板函数时模板实参的使用,下列表述正确的是
对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略
对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略
对于虚拟类型参数所对应的模板实参,若能够省略则必须省略
对于常规参数所对应的模板实参,任何情况下都不能省略
第11题
有如下函数模板:template<class T> T square(T x){ return x*x; }其中T是
第12题
下列函数模板中的定义中,合法的是
template T abs(T x){ return x<0?-x:x; }
第13题
C++中的模板包括
对象模板和函数模板
对象模板和类模板
函数模板和类模板
变量模板和对象模板
第14题
下列有关模板的叙述中,正确的是
函数模板不能含有常规形参
函数模板的一个实例就是一个函数定义
类模板的成员函数不能是模板函数
用类模板定义对象时,绝对不能省略模板实参
第15题
下面是一个模板声明的开始部分:template<typename T> double___,由此可知
这可能是一个函数模板的声明
这可能是一个类模板的声明
这既可能是一个函数模板的声明,也可能是一个类模板的声明
这肯定是一个错误的模板声明
第16题
调用模板函数时,在一定条件下可以省略模板实参
可以用int、double这样的类型修饰符来声明模板参数
模板声明中的关键字class都可以用关键字typename替代
模板的形参表中可以有多个参数
第17题
下列关于函数模板的描述中,错误的是
从模板实参表和从模板函数实参获得信息矛盾时,以模板实参的信息为准
虚拟类型参数没有出现在模板函数的形参表中,不能省略模板实参
模板参数表不能为空
第18题
下列关于模板的叙述中,正确的是
模板形参表必须在关键字template之后
模板形参表必须用圆括号()括起来
可以用class修饰模板形参
可以用typename修饰模板形参
第19题
下列关于类模板的描述中,错误的是
可以为类模板参数设置默认值
类模板描述了一组类
类模板中只允许有一个类型参数
第20题
如果一个类中存在纯虚函数,这个类就是类模板
函数模板不能有形式参数表
类模板是一种参数化类型的类,是类的生成器
类模板中不能包含构造函数
第21题
有函数模板声明和定义如下:template<class T1,class T2,class T3> T1 sum(T2 d1,T3 d2);下列调用中,错误的是
sum<double,double,int>(d1,d2);
sum<double,double,double>(d1,d2);
sum(d1,d2);
第22题
下列关于函数模板的描述中,正确的是
函数模板是一个实例函数
使用函数模板定义的函数没有返回类型
函数模板的类型参数与函数的参数相同
通过使用不同的类型参数,可以从函数模板得到不同的实例函数
第23题
有如下函数模板定义:template<typename T1, typename T2> T1 FUN(T2 n){return n*5.0;}若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为
FUN(9)
FUN<9>
FUN<9>(double)
第24题
下列关于模板的描述中,错误的是
函数模板是一种参数化类型的函数
满足一定条件时可以省略模板实参
模板形参只能由关键字typename声明
第25题
已知主函数中通过语句序列实现对函数模板swap的调用:int a[10], b[10]; swap(a, b, 10);下列对函数模板swap的声明中,会导致上述语句序列发生编译错误的是
template void swap(T a[],T b[],int size);
template void swap(int size,T a[],T b[]);
template<typename T1,typename T2> void swap(T1 a[],T2 b[],int size);
template<class T1,class T2> void swap(T1 a[],T2 b[],int size);
第26题
在定义函数模板或类模板时,开头的保留字是
typename
template
typedef
第27题
若有函数模板mySwap和变量定义如下:template<class T> void mySwap(T X,T Y); double d1,d2;int i1,i2;下列对mySwap的调用中,错误的是
mySwap(i1,i2)
mySwap(d1,d2)
mySwap(i1,d1)
mySwap(i2,d2)
第28题
模板对类型的参数化提供了很好的支持,因此
类模板的主要作用是生成抽象类
类模板实例化时,编译器将根据给出的模板实参生成一个类
在类模板中的数据成员都有同样类型
类模板中的成员函数都没有返回值
第29题
关于关键字class和typename,下列表述中正确的是
程序中的typename都可以替换为class
程序中的class都可以替换为typename
在模板形参表中只能用typename来声明参数的类型
在模板形参表中只能用class或typename来声明参数的类型
第30题
下列关于类模板的模板参数的叙述中,错误的是
模板参数可以作为数据成员的类型
模板参数可以作为成员函数的返回类型
模板参数可以作为成员函数的参数类型
模板参数不能作为成员函数的局部变量的类型
第31题
下列模板声明中,有语法错误的是
template T fun(T t){return t;}
template T fun(T t){return x;}
template T fun(T x,int n){return x*n;}
template T classA{T n;}
第32题
在定义一个类模板时,模板形参表是用一对括号括起来的,所采用的括号是
()
[]
<>
{}
第33题
有如下模板声明:template<typename T1, typename T2> class A;,与上述声明不等价的是
template<class T1, class T2> class A;
template<class T1, typename T2> class A;
template<typename T1, class T2> class A;
template<typename T1, T2> class A;
第34题
若MyTemp是一个只有一个虚拟类型参数的类模板,且有语句序列MyTemp<double> p2; MyTemp<long> p3[2];,编译系统在处理该语句序列时,所生成的模板MyTemp的实例的个数是
1
2
3
0
第35题
调用模板函数时,有时可以省略模板实参
函数模板的每个实例就是一个函数定义
类模板的每个实例就是一个类定义
类模板的实例是一个类对象
第36题
下列类模板的定义中语法格式错误的是
template class Buffer{/.../};
template<class T1, class T2> class Buffer{/.../};
template<> class Buffer{/.../};
第37题
下列对模板的叙述中,正确的是
template<> T
template<T1,T1,T2>
template<class T1,class T2>
template<class T1; class T2>
第38题
下面关于函数模板的表述中不正确的是
类模板本身在编译过程中不会产生任何代码
类模板只能有虚拟类型的参数
用类模板定义一个对象时,实参不能省略
选择题(0 - 0题,共计0分) 填空题(0 - 0题,共计0分)