类模板定义只是对类的描述,它本身还是一个没有确切意义的类。类模板不能直接使用,必须先把类模板实例化,即生成一个模板类后才能使用。与函数模板由编译器在处理函数调用时自动完成实例化不同的是,类模板的实例化必须由程序员在程序中显示地指出。类模板实例化的方式如下:
类模板名< 类型实参表> 对象名表;
在上述类模板实例化代码中< 类型实参表> 要与类模板中的定义的形参具有相同个数。
【例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
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。