|
|
51CTO旗下网站
|
|
移动端

1.16.5 模板

《程序员面试笔试真题与解析》本书针对当前各大 IT企业面试笔试中特性与侧重点,精心挑选了 3年以来近百家典型 IT企业的面试笔试真题,这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机 APP、安全关键软件等,面试笔试真题非常具有代表性与参考性。本节为大家介绍模板。

作者:猿媛之家来源:机械工业出版社|2017-12-06 18:52

1.16.5 模板

【真题 272】下面模板声明中,非法的是()。

A.template<class Type>class C1; B.template<class T,U , class V>class C2;

C.template<class C1 , typename C2>class C3{}; D.template<typenamemyT , class myT>class C4{};

答案:B、D。

类模板的格式如下:

  1. template<class  形参名,class形参名,…> class 类名   
  2. { ... }; 

函数模板的格式如下:

  1. template <class 形参名,class形参名,......>返回类型函数名(参数列表){函数体 } 

其中,class可以用 typename关键字代替。

本题中,选项 A和选项 C的写法完全符合类模板的定义格式,因此,选项 A与选项 C正确。对于选项 B,U没有被 class或 typename修饰,这是一种错误的写法,所以,选项 B错误。对于选项 D,由于 typename与 myT中间没有空格,因此,选项 D错误。所以,本题的答案为 B、D。

【真题 273】下面关于 sort的 template的写法中,正确的是()。

A.void sort( class A first, class A last, class B pred)

B.void template(class A, class B) sort(A first, A last, B pred)

C.template<class A><class B> void sort(A first, A last, B pred )

D.template<class A, class B> void sort(A first, A last, B pred)

答案:D。

MSDN中对模板的定义如下:

template<class RanIt> void sort(RanIt first, RanIt last);
template<class RanIt, class Pred>    void sort(RanIt first, RanIt last, Pred pr);

模板函数格式是先声明模板类型,然后才能使用。

格式是 template<class T1, class T2, ...>返回值函数名(参数列表),从模板函数的格式可以看出,只

有选项 D的写法满足这个格式。所以,选项 D正确。

【真题 274】 C++语言中为什么使用模板类?答案:模板类主要有以下 5个方面的优点:

1)用来创建动态增长和减小的数据结构。

2)由于它是类型无关的,因此,它具有很高的可复用性。

3)它在编译时而不是运行时检查数据类型,保证了类型安全。

4)它是平台无关的,具有较好的可移植性。

5)可用于基本数据类型。

【真题 275】函数模板与类模板有什么区别?答案:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程

序员在程序中显式地指定。

【真题 276】下面有关 C++语言中为什么使用模板类的原因中,描述错误的是()。

A.可用来创建动态增长和减小的数据结构 B.它是类型无关的,因此具有很高的可复用性

C.它运行时检查数据类型,保证了类型安全 D.它是平台无关的,可移植性强答案:C。模板类在编译时而不是运行时检查数据类型,从而保证了类型安全。所以,选项 C错误。

【真题 277】下面的模板声明中,使用正确的是()。

A.template<T> B.template<class T1,T2>

C.template<class T1,class T2> D.template<class T1 ;class T2> 答案:C。模板定义的类型参数表中包含一个或多个由逗号分隔的类型参数项,每一项由关键字 class后跟一

个用户命名的标识符组成,此标识符为类型参数,它不是一种数据类型,但可以同一般数据类型一样使用。本题中,对于选项 A与选项 B,在进行模板定义时,变量的类型或者全部被省略或者部分被省略了,

这与定义矛盾。所以,选项 A与选项 B错误。对于选项 C,完全符合模板定义的要求。所以,选项 C正确。对于选项 D,数据变量中间使用分号进行了间隔,而非逗号,很显然是不合理的。所以,选项 D错误。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

精通Spring 2.0

本书是关于Spring 2.0的权威教程,是Java/Java EE开发者必备的参考书。本书详尽系统地介绍了Java EE的基础知识、Spring 2.0的各种功能,以...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊