C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt

C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt

ID:50318906

大小:223.00 KB

页数:59页

时间:2020-03-08

C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt_第1页
C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt_第2页
C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt_第3页
C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt_第4页
C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt_第5页
资源描述:

《C++程序设计案例教程 教学课件 作者 刘玉山第8章多态.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第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、息管理,在存储了学生的信息之后,可能要对学生的信息进行查询,了解学生的情况。那么在查询的时候,就要提供查询的依据,比如学生的编号或者学生的姓名等。这里,要求通过学生的编号和姓名分别来查询学生的信息。(2)任务分析与设计当然,对学生信息的查询,前提是必须有对学生信息的存储,然后才能查询。这里对学生信息的存储通过数组的方式。当然数组需要指定数组的长度,同时还需要查询的依据。当然这里返回的是查询得到的学生对象。所以,查询的函数原形为:intFindByName(constStudent*s,intsize,stringname);intFindByCode(

3、constStudent*s,intsize,intcode);(3)任务实现见程序Student820.cpp(4)要点总结这里学生信息存储在数组里,然后分别通过输入要查询的学生的姓名和编号,调用两个全局函数实现了对学生信息的查询。通过返回的数值来判断是否找到。如果为-1,表示没有找到;否则返回的数值就是要查询的学生信息在数组存储中的序号。(5)涉及到知识点由于没有用到的是前面章节讲述的内容,所以这里基本没有涉及到新的知识点。8.2.1函数重载任务2:修改任务1中实现代码,使其函数的名称相同,并且保证分别通过编号和姓名来查询学生的信息。(1)任务描述

4、在学生信息管理中,对学生信息的查询的需求,是非常必要的。并且把对学生信息查询的函数都声明为相同的函数名称,这对于以后的功能调用也是有帮助的。(2)任务分析与设计由于要求函数的名称要一样,这对于编译器而言,要区分不同的函数只能通过函数的参数列表。所以这里的参数列表不同。函数的参数列表不同是指:参数的个数不同或者参数的类型不同或者参数的顺序不同。这里的修改后的函数原形为:intFindStudent(constStudent*s,intsize,stringname);intFindStudent(constStudent*s,intsize,intcod

5、e);(3)任务实现见程序Student821.cpp(4)要点总结该实现程序中,两个全局函数的名称相同,都为FindStudent,但是它们的参数列表不同。这样编译器在编译它们的时候就能对它们加以区分。(5)涉及到知识点函数重载:函数名称相同,参数列表不同。这样的函数,就称为函数重载。对于函数重载的区分:要求函数名称相同,参数列表不同。而参数列表包括参数的个数,参数的类型,参数的顺序。注意:返回类型、形参名称、缺省的实参、以及对形参的修饰符号const都不能用来区分两个不同的函数的依据。8.2.2操作符重载任务3:分别实现对学生对象的比较判断、输入与

6、输出以及赋值。(1)任务描述因为系统提供的比较操作符“!=、==、=、>>、<<”,这里对于用户自定义的类Student来说,不起作用。所以为了以后对学生对象判断和输入/出的方便,需要自定义这些操作符。而在学生信息管理中,对学生对象的比较、拷贝赋值,以及对它的输入和输出都是经常用的操作符。所以这里要求提供对学生对象的比较判断、输入与输出以及赋值。(2)任务分析与设计虽然要重新定义这些运算符,但是系统提供的原来的定义仍然要求有效,这刚好是上一节中的讲述的函数重载。这里输入和输出由于是对学生对象的操作,所以这里把它们声明为全局函数。而对“!=、==、=”操

7、作符的重载则放在Student类的定义中。(3)任务实现见程序Student822.cpp(4)要点总结上面的程序实现了对这几个操作符的重载,并满足了任务的要求。在对操作符重载的过程中,“!=、==、=”在Student类中实现,而“>>”和“>>”在类外作为全局函数实现。(5)涉及到知识点操作符重载:是函数重载的特殊情况。它可使得程序员能够为类类型的操作数定义预定义的操作符版本。重载的操作符在类体中的声明方式同普通成员函数一样,只不过它的名字包含关键字operator以及紧随其后的一个预定义操作符。注意:1)编译器只考虑在左操作数的类中定义的成员重载

8、操作符。2)只有在C++预定义操作符集中的操作符才可以被重载,下表列出了可以被重载的操作符。8

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。