C++程序设计案例教程 刘玉山 第8章多态新.pptVIP

C++程序设计案例教程 刘玉山 第8章多态新.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章 多态 学习目标 1)了解函数模板和类模板。 2)理解多态的概念。 3) 掌握函数重载和操作符重载的用法。 4)掌握虚函数和抽象类的用法。 第8章 多态 8.1 多态性的概念 8.2 重载 8.3 模板 8.4 虚函数 8.5 抽象类 8.1 多态性的概念 多态性(polymorphism):词的意思为多种形态。 一般情况下,多态性是考虑在不同层次的类中,以及在同一类中,同名的成员函数之间的关系问题。 C++中多态性的体现分为: 编译期:函数重载(运算符重载)和模板(函数模板、类模板) 运行期:虚函数(纯虚函数、抽象类) 8.2 重载 任务1:分别通过编号和姓名来查询学生的信息。 (1)任务描述 对于学生信息管理,在存储了学生的信息之后,可能要对学生的信息进行查询,了解学生的情况。那么在查询的时候,就要提供查询的依据,比如学生的编号或者学生的姓名等。这里,要求通过学生的编号和姓名分别来查询学生的信息。 (2)任务分析与设计 当然,对学生信息的查询,前提是必须有对学生信息的存储,然后才能查询。这里对学生信息的存储通过数组的方式。当然数组需要指定数组的长度,同时还需要查询的依据。当然这里返回的是查询得到的学生对象。 所以,查询的函数原形为: int FindByName(const Student *s,int size,string name); int FindByCode(const Student *s,int size,int code); (3)任务实现 见程序Student820.cpp (4)要点总结 这里学生信息存储在数组里,然后分别通过输入要查询的学生的姓名和编号,调用两个全局函数实现了对学生信息的查询。通过返回的数值来判断是否找到。如果为-1,表示没有找到;否则返回的数值就是要查询的学生信息在数组存储中的序号。 (5)涉及到知识点 由于没有用到的是前面章节讲述的内容,所以这里基本没有涉及到新的知识点。 8.2.1 函数重载 任务2:修改任务1中实现代码,使其函数的名称相同,并且保证分别通过编号和姓名来查询学生的信息。 (1)任务描述 在学生信息管理中,对学生信息的查询的需求,是非常必要的。并且把对学生信息查询的函数都声明为相同的函数名称,这对于以后的功能调用也是有帮助的。 (2)任务分析与设计 由于要求函数的名称要一样,这对于编译器而言,要区分不同的函数只能通过函数的参数列表。所以这里的参数列表不同。函数的参数列表不同是指:参数的个数不同或者参数的类型不同或者参数的顺序不同。这里的修改后的函数原形为: int FindStudent(const Student *s,int size,string name); int FindStudent (const Student *s,int size,int code); (3)任务实现 见程序Student821.cpp (4)要点总结 该实现程序中,两个全局函数的名称相同,都为FindStudent,但是它们的参数列表不同。这样编译器在编译它们的时候就能对它们加以区分。 (5)涉及到知识点 函数重载:函数名称相同,参数列表不同。这样的函数,就称为函数重载。 对于函数重载的区分:要求函数名称相同,参数列表不同。而参数列表包括参数的个数,参数的类型,参数的顺序。 注意:返回类型、形参名称、缺省的实参、以及对形参的修饰符号const都不能用来区分两个不同的函数的依据。 8.2.2 操作符重载 任务3:分别实现对学生对象的比较判断、输入与输出以及赋值。 (1)任务描述 因为系统提供的比较操作符“!=、==、=、、”,这里对于用户自定义的类Student来说,不起作用。所以为了以后对学生对象判断和输入/出的方便,需要自定义这些操作符。 而在学生信息管理中,对学生对象的比较、拷贝赋值,以及对它的输入和输出都是经常用的操作符。所以这里要求提供对学生对象的比较判断、输入与输出以及赋值。 (2)任务分析与设计 虽然要重新定义这些运算符,但是系统提供的原来的定义仍然要求有效,这刚好是上一节中的讲述的函数重载。这里输入和输出由于是对学生对象的操作,所以这里把它们声明为全局函数。而对“!=、==、=”操作符的重载则放在Student类的定义中。 (3)任务实现 见程序Student822.cpp (4)要点总结 上面的程序实现了对这几个操作符的重载,并满足了任务的要求。 在对操作符重载的过程中,“!=、==、=”在Student类中实现,而“”和“”在类外作为全局函数实现。 (5)涉及到知识点 操作符重载:是函数重载的特殊情况。它可使得程序员能够为类类型的操作数定义预定义的

文档评论(0)

118压缩包课件库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档