实验12(模板)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验十二C++模板

一、实验目的

1、掌握C++模板的概念。

2、能够使用类模板来创建一组相关类型。

3、能够区别函数模板和模板函数、类模板和模板类。

4、理解前捆绑与后捆绑的异同。

5、理解如何重载模板函数。

二、实验内容及步骤

1、填空

(1)利用模板,通过一个代码段,便可以制定整个作用域的相关类,这种类称为_______. (2)类模板也可称为___________类型。

(3)定义函数模板时使用的关键字是。

(4)类模板不同于函数模板类模板只可用型函数。

2、已知intDBL(int n){return n + n;}和longDBL(long n){return n+n;}是一个函数模板的两个实例,则该函数模板的定义是?

3、已知一函数模板定义为

template Type incre(Type n) { return n+1; }

则函数调用incre(5.0) 使用得该函数模板产生的实例化函数为:____________________ 4、下列模板的定义是否合法的?若为非法的,请简单扼要说明理由。

(1) template class Container1;

(2) template class Container1;

(3) template class Container2;

(4) template class Container3;

(5) template class Container2;

(6) template class Container5;

5、选择题

(1)模板对类型的参数化提供了很好的支持,因此

A)类模板的主要作用是生成抽象类

B)类模板实例化时,编译器将根据给出的模板实参生成一个类

C)在类模板中的数据成员都具有同样类型

D)类模板中的成员函数都没有返回值

(2)有如下函数模板:

template T cast(U u){return u;}

其功能是将U类型数据转换为T类型数据。已知i为int型变量,下列对模板

函数cast的调用中正确的是

A)cast(i);B)cast<>(i);

C)cast(i);D)cast(i);

(3)下列关于模板的叙述中,错误的是

A)模板声明中的第一个符号总是关键字template

B)在模板声明中用<和>括起来的部分是模板的形参表

C)类模板不能有数据成员

D)在一定条件下函数模板的实参可以省略

(4)有如下函数模板定义:

template

T func(T x,T y){return x*x+y*y;}

在下列对func的调用中,错误的是

A)func(3,5);B)func(3.0,5.5);

C)func(3,5.5);D)func(3,5.5);

6、简答题

(1)什么是模板,为什么要引入模板?

(2)函数模板如何定义,模板函数和函数模板有何关系?

(3)类模板如何定义,模板类和类模板之间的关系是什么?

7、编写程序

(1)定义一个函数模板,先交换两个int变量的值,然后交换两个float变量的值。

(2)定义一个函数模板求数组的最大值,并在主程序中用3个不同的数组进行验证。

(3)[附加题]尝试定义一个栈类模板,实现压入数据和抛出数据,并在主程序中进行验证。

相关文档
最新文档