工学

单选题假设有函数模板定义如下:templateMax(T a,T b,T&c){c=a+b;}下列选项正确的是()A )int x,y;char z;Max(x,y,z);B )double x,y,z;Max(x,y,z);C )int x,y;float z;Max(x,y,z);D )float x;double y,z;Max(x,y,z);

题目
单选题
假设有函数模板定义如下:templateMax(T a,T b,T&c){c=a+b;}下列选项正确的是()
A

)int x,y;char z;Max(x,y,z);

B

)double x,y,z;Max(x,y,z);

C

)int x,y;float z;Max(x,y,z);

D

)float x;double y,z;Max(x,y,z);

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

有如下函数模板声明: template T Max(Ta,Tb){return(a>=b)?a:b;) 下列对函

有如下函数模板声明: template<typename T> T Max(Ta,Tb){return(a>=b)?a:b;) 下列对函数模扳Max的调用中错误是

A.Max(3.5,4,5)

B.Max(3.5,4)

C.Max<double>(3.5,4.5)

D.Max<double>(3.5,4)


正确答案:B

第2题:

有如下函数模板声明:templateT Max(T a,T b){return(a>=b)?a:b;}下列对函数模板Max(

有如下函数模板声明: template<typename T> T Max(T a,T b){return(a>=b)?a:b;} 下列对函数模板Max()的调用中错误的是( )。

A.Max(3.5,4.5)

B.Max(3.5,4)

C.Max(double)(3.5,4.5)

D.Max<double>(3.5,4)


正确答案:B
解析: 引用模板函数和引用一般的函数在语法形式上没有任何区别。说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中对应的形参。

第3题:

已知一个函数模板定义为 template T1 FUN(T2 n){return n*5.0;}

已知一个函数模板定义为

template <typename T1.typenaine T2>

T1 FUN(T2 n){return n*5.0;}

若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为______。


正确答案:FUNdouble>(7)
FUNdouble>(7) 解析:实参类型和返回值类型不匹配时,需要强制转换参数类型,所以在函数模板调用时要显式地定义参数数据类型double,将整数7转换为double型。

第4题:

有如下函数模板定义: template T1 Fun(T2 n){return n*5.0;} 若要求

有如下函数模板定义:

template<typename T1, Typename T2>

T1 Fun(T2 n){return n*5.0;}

若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。

A) FUN(9)

B) FUN<9>

C) FUN<double>[9]

D) FUN<9>(doubl

A.

B.

C.

D.


正确答案:C

第5题:

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

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

第6题:

( 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

第7题:

下列函数模板的定义中,合法的是A.template T abs(T x){return x<0?-x:x;}B.templat

下列函数模板的定义中,合法的是

A.template <typename T> T abs(T x){return x<0?-x:x;}

B.template class <T> T abs(T x){return x<0?-x:x;}

C.template T<class T>abs(T x){return x<0?-x:x;}

D.template T abs(T x){return x<0?-x:x;}


正确答案:A
解析:本题考查的知识点是:函数模板。声明一个函数模板的格式是:
template模板形参表声明>>函数声明>
其中的模板形参表声明>是由一个或多个模板形参>组成。每个模板形参>具有下面几种形式:
(1)typename参数名>
(2)class参数名>
(3)类型修饰>参数名>
故本题应该选择A。

第8题:

下列模板声明中,有语法错误的是( )。A.templateT fun(T x){return x;}B.template

下列模板声明中,有语法错误的是( )。

A.template<typename T>T fun(T x){return x;}

B.template<typename T>T fun(T x,int n){return x*n;}

C.template<class T>T fun(T*p){return *p;}

D.template<class T>T ClassA{T n;}


正确答案:D
解析:此题考查的是函数模板的声明。声明一个函数模板的格式为:template模板形参表声明>函数声明,其中的模板形参表声明>是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename参数名;class参数名;类型修饰参数名。而选项D)为定义类模板的格式,即template类型形参表,class类模板名>{};。

第9题:

已知一个函数模板定义为: template T1 FUN(T2 n){return n*5.0;} 若

已知一个函数模板定义为:

template<typename T1, typename T2>

T1 FUN(T2 n){return n*5.0;}

若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为______。


正确答案:FUNdouble>(7)或FUNdoubleint>(7)
FUNdouble>(7)或FUNdouble,int>(7) 解析:此题考查的是函数模板的调用。本题模板函数的返回值类型为T1,形参类型为T2。题目要求用int型参数7调用,并返回一个double型数据。故调用格式为FUNdouble,int>(7)。也可省略T2的类型int,简写为FUNdouble>(7)。

第10题:

以下函数模板max()的功能是返回数组a中最大元素的值。请将横线处缺失部分补充完整。

template<typename T>T max(T a[],int n)

{

T m=a[0]

for(int i=1;i<n;i++)

if(a[i]>m)______;

return m;

}


正确答案:m=a[i]
m=a[i] 解析:此题考查的是函数模板、if语句、for循环等知识点。函数模板max()的功能是返回数组a中最大元素的值,所以当a[i]是最大值时,应将a[i]的值赋值给m。

更多相关问题