理论教育 面向对象程序设计:类模板实例化

面向对象程序设计:类模板实例化

时间:2023-10-25 理论教育 版权反馈
【摘要】:类模板定义只是对类的描述,它本身还是一个没有确切意义的类。与函数模板由编译器在处理函数调用时自动完成实例化不同的是,类模板的实例化必须由程序员在程序中显示地指出。对Link List类模板实例化。对Link List类模板实例化,声明为Link List 。综合实训模板1.理解类模板的定义。

面向对象程序设计:类模板实例化

类模板定义只是对类的描述,它本身还是一个没有确切意义的类。类模板不能直接使用,必须先把类模板实例化,即生成一个模板类后才能使用。与函数模板由编译器在处理函数调用时自动完成实例化不同的是,类模板的实例化必须由程序员在程序中显示地指出。类模板实例化的方式如下:

类模板名< 类型实参表> 对象名表;

在上述类模板实例化代码中< 类型实参表> 要与类模板中的定义的形参具有相同个数。

【例8.2】对Link List类模板实例化。

对Link List类模板实例化,声明为Link List<int> 。编译器自动把类模板中的参数类型T 替换成int,以生成int类型Link List类的源代码。虽然程序员看不到这些源代码,但这些源代码仍会包括在程序中,并进行编译。

综合实训

模板

【实训目的】

1.理解类模板的定义。

2.理解类模板的实例化。

【实训内容】

编写一个队列的类模板(包括其成员函数定义)。

说明:队列的特点是数据“先进后出”,主要操作有入队列(enQueue)和出队列(de-Queue)。

【实训设计】

项目小结

本项目主要介绍了C++中的泛型程序设计的方法——模板。设计好模板后,编译器就可以根据模板产生多种特定类型的实例。模板分为函数模板和类模板,函数模板是对一类函数的抽象,它以任意类型为参数,类模板是对一组类的公共性质的抽象,它并不是一个具体类,而是代表某一类的类。在本项目中,我们学习了函数模板的定义与实例化,类模板的定义与实例化。

课后练习

一、选择题

1.下列关于函数模板参数的描述错误的是( )。(www.daowen.com)

A.模板参数可以是1个或多个

B.通常每个模板参数前加class

C.模板参数是一个算术表达式

D.模板参数是参数化的类型

2.定义函数模板时,应该使用关键字( )。

A.typename B.inline

C.template D.operator

二、编程题

1.编写一个函数模板,它返回两个值中的最小者。

2.编写一个求绝对值的函数模板,该函数具有一个参数,返回该参数的绝对值。

3.编写一个函数模板,用以实现冒泡法排序。

4.编写一个栈的类模板(包括其成员函数定义)。

说明:栈的特点是数据“先进先出”,主要操作有入栈(Push)和出栈(Pop)。

资源推荐

1.C++网站 http://www.cplusplus.com

2.C++类库参考 https://msdn.microsoft.com/zh-cn/library/cscc687y.aspx

3.百度传课 http://www.chuanke.com/course/72351176561000448_________2.html

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈