面向对象的程序设计语言——C++ 第二版 陈志泊 第09章新.pptVIP

面向对象的程序设计语言——C++ 第二版 陈志泊 第09章新.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京林业大学 软件教研室 第9章 模板 本章主要内容 (1)掌握什么是模板以及引入模板的原因。 (2)掌握在程序中如何定义和使用类模板。 (3)掌握在程序中如何定义和使用函数模板。 (4)掌握模板的实例化机制。 具有同样功能的函数,能否只写一套代码? 模板机制。 模板的作用就是使程序能够对不同类型的数据进行相同方式的处理。 模板是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。 C++中的模板分为函数模板和类模板。 9.1 类模板 9.1.1 类模板的定义 template 类型形参表 class 类模板名 { private: 私有成员定义 protected: 保护成员定义 public: 公有成员定义 }; 类模板中的成员函数的定义 可以放在类模板的定义体中定义 也可以放在类模板的外部定义,此时成员函数的定义格式如下: template 类型形式参数表 函数值的返回类型 类模板名类型名表:: 成员函数(形参) { 函数体} 9.1.2 类模板的使用 【例9-1】定义类模板ABC,其内含成员函数set和get。用ABC生成对象abc1和abc2。它们的数组元素数不同,显示的结果也不同。 【例9-2】定义类模板ABC,其内含成员函数set和get。用ABC生成对象abc1和abc2。它们的数组元素数不同,显示的结果也不同。 成员函数定义体放于类模板外部定义 ! 类模板的使用方法 (1)给出类模板的定义体。 (2)在适当的位置创建一个类模板的实例,即一个实实在在的类定义,同时创建该模板类的对象。 (3)有了对象名,其以后的使用就和普通类对象的使用相一致。 9.2 函数模板 9.2.1 函数模板的定义 函数模板是函数的一种抽象形式。 template 类型形式参数表 函数返回值类型名 函数模板名(函数形参及类型) { 函数体 } 如: template class T T max( T x, T y) { return xy?x:y; } 9.2.2 函数模板的使用 【例9-3】定义一个求任意两个具有相同类型的数中的较大值的函数模板,然后进行调用并完成相应的功能。 分析以下程序中出现的错误 #include iostream.h template class T //定义函数模板min,类型形参为T,它表示某种类型 T min(T a, T b) //函数值的类型为T,形参a,b的类型为T { if (ab) return a; else return b; }? 9.3 综合实例 【例9-4】设计一个单向链表的类模板,使其能够完成单向链表的创建和显示。 分析: 链表是通过指针将一个一个的数据连接起来,链表中不仅可以存放int型、double型、char型等数据,可以可存放构造数据类型(如结构体类型)的数据,为此我们将其中的数据类型定义为T型。 在主函数中将其分别实例化为int型和char型。 【例9-5】用函数模板的方式实现对不同数据类型的数组中的数据进行输入、从小到大排序和输出。然后用int整型数组和double型数组进行测试。 分析: 根据本题的题意,需要设计3个函数模板input、sort、output分别完成对不同数据类型的数组的输入、排序、输出,将这3个函数模板中的形参的数组类型设置为T型,来代表某种数据类型; 然后在主函数中分别用int型和double型将其实例化,最终完成3个函数模板的测试。 9.4 小结 (1)当在程序设计中遇到若干个程序结构有同一种模式时可以使用模板。 (2)模板是一种高度抽象的结构形式。 (3)类模板是对类的抽象,代表一类类,这些类具有相同的功能,但数据成员类型及成员函数返回类型和形参类型不同。 (4)函数模板是一类函数的抽象,代表了一类函数,这一类函数具有相同的功能。 * * 可以包含基本数据类型,也可以包含类类型。 类模板中定义的名称 类模板定义中的类型形式参数表中的参数名 void main() { int i1=10, i2=20; double d1=3.5, d2=-1.2; char c1=b, c2=x; coutmin(i1,i2)endl; coutmin(d1,d2)endl; coutmin(c1,c2)endl; coutmin(i1,c1)endl

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档