- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第八章模板
学习目标
理解什么是模板
掌握函数模板与模板函数的使用
掌握类模板与模板类的使用
计算机科学与工程学院
模板的概念
函数重载可以实现具有相同功能的函数的函数名相同,使
程序更加易于理解。但是书写函数的个数并没有减少,重
载函数的代码几乎完全相同。如何解决代码重复的问题呢?
模板是类型参数化的工具。所谓类型参数化,是指把类型
定义为参数,当参数实例化时,可指定不同的数据类型,
从而真正实现代码的可重用性。
模板分函数模板和类模板,它们分别允许用户构造模板函
数和模板类。
计算机科学与工程学院
模板的概念
图8-1模板、模板函数、模板类、对象之间的关系
计算机科学与工程学院
函数模板与模板函数
声明函数模板的格式:
templateclass类型参数
返回类型函数名(模板形参表)
{
函数体
}
例如:输出不同类型数组的元素值可定义成函数模板
templateclassTtemplatetypenameT
voidPrintArray(T*Array,intcount)voidPrintArray(T*Array,intcount)
{{
for(inti=0;icount;i++)for(inti=0;icount;i++)
coutArray[i];coutArray[i];
coutendl;coutendl;
}}
计算机科学与工程学院
函数模板与模板函数
说明:
T是类型参数,它既可以是系统预定义的数据类型,也可以是用
户自定义的类型。
类型参数前需要加关键字class(或typename),这个class并不是
类的意思,而是表示任何类型的意思。
在使用模板函数时,关键字class(或typename)后面的类型参数,
必须实例化,即用实际的数据类型替代它。
里面的类型参数可以有一个或多个类型参数,但多个类型参
数之间要用逗号“,”分隔。
[例8-1]函数模板应用举例:输出不同类型数组的元素的值。
计算机科学与工程学院
函数模板与模板函数
注意:
在执行PrintArray函数调用时,根据参数的类型,系统自动在内
存中生成一个模板函数(即实例化函数),并执行该函数。
函数模板中可以使用多个类型参数。但每个模板形参前必须有关
键字class或typename。
[例8-2]多个类型参数应用举例:求两个数的最大值。
在template语句和函数模板定义语句之间不允许有其他的语句,
例如
templateclassT1,classT2
intn;//错误,不允许有其他的语句
T1Max(T1x,T2y)
{
return(xy)?x:y;
}
计算机科学与工程学院
函数模板与模板函数
模板函数类似于函数重载,但与函数重载不同。在进行函数重载
时,每个函数体内的动作可以相同也可以不同;但模板函数中的
动作必须相同。例如,下面的函数只能用函数重载,而不能用模
板函数。
voidprint(char*name)
{
coutnameendl;
}
voidp
您可能关注的文档
- (7.3.2)--8 绿色设计案例分析(下).ppt
- (7.4)--7.4 类模板的参数面向对象程序设计.ppt
- (7.4)--机器人控制系统及编程语言6.4.ppt
- (7.5)--7.5 类模板与派生面向对象程序设计.ppt
- (7.5)--机器人控制系统及编程语言6.5_2.ppt
- (7.6)--7.6 类模板与友元面向对象程序设计.ppt
- (7.6)--机器人控制系统及编程语言6.6.ppt
- (7.7)--7.7 类模板与静态成员.ppt
- (7.7)--机器人控制系统及编程语言6.6.ppt
- (7.8)--7.8 标准模板库STL概述面向对象程序设计.ppt
- (8.1)--8.1 流概念和类层次结构.ppt
- (8.1)--工业机器人装调与维修课程标准.pdf
- (8.1)--平面结构的几何组成.pdf
- (8.1.1)--ABB初级项目7-工业机器人电机装配-任务7.1 - 简化版.ppt
- (8.2)--8.2 使用cout进行输出面向对象程序设计.ppt
- (8.2.1)--ABB初级项目7-工业机器人电机装配-任务7.2.ppt
- (8.3)--8.3使用cin进行输入面向对象程序设计.ppt
- (8.3.1)--ABB初级项目7-工业机器人电机装配-任务7.3 - 简化版.ppt
- (8.4)--8.4格式化标准输入输出.ppt
- (8.5)--8.5文件模式和二进制文件.ppt
最近下载
- 2024年中考数学热点探究十三 格点图中的作图与计算问题.pdf VIP
- 智慧树 知到 形势与政策(成都工业学院)章节测试答案.docx VIP
- T YYTC 008—2024 吉林长白山灵芝孢子粉.pdf VIP
- CJJT106-2010 城市市政综合监管信息系统技术规范.docx VIP
- 2025通辽科尔沁区招聘146名社区工作者笔试模拟试题及答案解析.docx VIP
- 城市更新培训课件.pptx VIP
- 4、路基高边坡施工专项方案.doc VIP
- 光伏发电项目采用的专业标准清单.doc VIP
- 《中国近现代史纲要》题库及参考答案.doc VIP
- 爱普生 Stylus pro 4400 4450 4800 4880 4880c 喷墨打印机英文维修手册.pdf VIP
文档评论(0)