有如下函数模板:templateT cast(Uu){return u;}其功能是将U类型数据转换为T类型数据。已知i为int

题目

有如下函数模板: template T cast(Uu){return u;} 其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是( )。

A.cast(i);

B.cast<>(i);

C.cast(i);

D.cast(i);

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

第1题:

关于C++类型转换说法正确的有

A.static_cast用于基础数据类型转换,也可以将指针转换为 void * 类型指针

B.dynamic_cast 主要用于继承链上的指针类型或者引用类型转换

C.reinterpret_cast 用于将某个类型直接转换为另外一个类型,转换只是对原来的比特信息进行新的解释

D.dynamic_cast 主要用于指针类型间的转换

E.static_cast用于基础数据类型转换,也可以用于多态的指针类型转换

F.reinterpret_cast 只能用于将指针转换为长整型


B

第2题:

有如下函数模板: template T cast(Uu){ return u;} 其功能是

有如下函数模板: template<typename T,typename U> T cast(Uu){ return u;} 其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是

A.cast(i);

B.cast<>(i);

C.cast<char*,int>(i);

D.cast<double,int>(i);


正确答案:D
解析:本题考查的知识点是模板函数的调用。在调用一个模板函数时,编译系统需要足够的信息来判别每个虚拟类型参数所对应的实际类型,可以从两个不同的渠道获得这样的信息:从模板的实参表(用<和>括起来的参数表)或从模板函数实参表 (用(和)括起来的参数表),模板实参的信息优先于函数实参的信息。如果从后者获得的信息已经能够判定其中部分或全部虚拟类型参数所对应的实际参数,而且它们又正好是参数表中最后的若干参数,则模板实参表中的那几个参数可以省略。如果模板实参表中的实参都被省略了,则连空表<>也可以不要。本题中cast()函数的实参 i只能确定模板参数u的类型为int,而不能确定另外一个模板参数T。故选项A与B不正确。选项C希望将int转型为char*,C++中不允许隐式的这样转换类型,所以也不正确。故应该选择D。

第3题:

有如下函数模板定义:templateT1 sum(T1 a1) {return(a1+a2+a3);}则

有如下函数模板定义: template<typename T1,int a2,int a3> T1 sum(T1 a1) { return(a1+a2+a3); } 则以下调用中正确的是( )。

A.sum<int,4,3>(5);

B.sum<4,3>(5);

C.sum<int,int,int>(5);

D.sum(5);


正确答案:A

第4题:

有如下函数模板: template<typename T.typename U> T east(U u)i return u;} 其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板函数cast的调用中正确的是( )。

A.cast(i);

B.cast<>(i);

C.east<char*,int>(i);

D.east<double,int>(i);


正确答案:D
本题考查函数模板的基本运用,属于基础知识。函数模板实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型代表,这个通用函数就是函数模板。函数模板可以设定默认参数,这样在调用模板函数时就可以省略实参,函数模板的实例就是一个函数的定义。所以本题答案为D。

第5题:

有如下函数模板:templateT cast (U u){return u;}其功能是将U 类型数据

有如下函数模板: template<typename T,typename U> T cast (U u){ return u;} 其功能是将U 类型数据转换为T类型数据。已知i为int 型变量,下列对模板函数cast的调用中正确的是( )。

A.cast (i);

B.cast <>(i);

C.cast<char*,int>(i);

D.cast<double,int>(i);


正确答案:D

第6题:

已知一个函数模板定义为: 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)。

第7题:

已知一个函数模板定义为 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型。

第8题:

已知一个函数模板定义为

template T1, typename T2>

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

若要求 以 in t 型数 据 7 为函数实参调用该模板函数 , 并返回一 个 doubl e 型数据 , 则该 调用应表示为 【 15 】 。


正确答案:

第9题:

有如下函数模板:

template

T cast(U u){return u;}

其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是

A . cast(i);

B . cast<>(i);

C . cast(i);

D . cast (i);


正确答案:D