- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中华民族有着五千多年的文明历史,中华民族在世界上是一个非常卓越和伟大的民族。我们有过繁荣昌盛的唐朝,有过强盛无比疆域辽阔的汉朝和元朝,更有灿烂美丽的唐、宋文化 * C++程序设计 第8章(2) ━━多态性与虚函数 主要内容 C++的多态性 动态多态性的实现条件 虚函数的声明 虚函数的特性与调用 静态关联、动态关联 虚析构函数 纯虚函数 抽象类 综合实例 C++的多态性 多态性:指对不同类型的对象发送同样的消息(即调用同名的函数),不同类型的对象在接收时会产生不同的行为(即执行各自同名的函数)。 编译时多态性(静态多态性):指在编译阶段,系统就可根据所操作的对象,确定其具体的操作。编译时多态性是通过函数重载、运算符重载来实现的。函数重载是根据函数调用式中所给出的实参的类型或实参的个数,在编译阶段系统就可确定调用的是同名函数中的哪一个。运算符重载是根据运算式中所给出的运算对象的类型,在编译阶段系统就可确定执行的是同种运算中的哪一个。 运行时多态性(动态多态性):指在编译阶段,系统仅根据函数调用式是无法确定调用的是同名函数中的哪一个;必须在程序运行过程中,动态确定所要调用函数的当前对象,并根据当前对象的类型来确定调用的是同名函数中的哪一个。 运行时多态性是通过 “类的继承关系” 加上 “虚函数” 联合起来实现的。 动态多态性的实现条件 要有类的继承层次结构:一个基类可以派生出不同的派生类,各派生类中可以新增与基类中的函数名字相同、参数个数及类型也相同的成员,这些同名的成员函数在不同的派生类中就有不同的含义!这样,在类的继承结构中,不同的层次上出现了名字相同、参数个数及类型也相同、但功能不同的函数! 引入虚函数:作用是在由一个基类派生出的类体系中实现 “一个接口,多种方法”,主要用于建立通用程序。对于同一类体系中的各层次派生类,使用虚函数可实现统一的类接口,以便用相同的方式对各层次派生类的对象进行操作。虚函数是基类的成员函数,是为了实现某一种功能而假设的虚拟函数,在该基类的各层次派生类中对该虚函数可有各自不同的定义 ! 要能体现虚函数的特性:必须通过基类的对象指针、基类的对象引用来调用各层次派生类对象的同名虚函数,才能体现虚函数的特性!因为只有这样才能用相同的调用方式去调用不同层次派生类对象的同名虚函数,从而实现动态多态性。 虚函数的声明 虚函数的声明:class 基类 { … virtual 返回值类型 成员函数名 ( 形参表 ) { 函数体 } }; ①当一个基类的某成员函数声明为虚函数,则在该基类的所有派生类中,与虚函数同名、参数个数及类型相同、且返回值类型也相同的,不论是否有关键字 virtual 修饰,都是虚函数,反之不然。但要注意:若在派生类中只是与虚函数同名,而参数个数或类型有不同时,属于函数重载,不是虚函数! ② virtual 只是用在类中声明虚函数,若在类外定义虚函数前面不要加 virtual。 ③构造函数、静态成员函数不能声明为虚函数!析构函数可以声明为虚函数。 虚函数的特性与调用 如何体现虚函数的特性?只有通过基类的对象指针、基类的对象引用来调用派生类对象的虚函数时,才能体现虚函数的特性!而通过派生类对象的对象名、对象指针、对象引用来调用虚函数时,无法体现虚函数的特性! 派生类对象中一般成员函数的调用━━方法㈠: 可通过派生类对象的对象名、对象指针、对象引用来调用!调用过程:若派生类新增成员函数中存在该函数,则被调用;若不存在,则调用上一层基类中的该函数;若这一层基类中也不存在,就继续往上一层寻找 … ,直至找到该函数并被调用。 派生类对象中一般成员函数的调用━━方法㈡: 可通过基类的对象指针、基类的对象引用来调用派生类对象中的一般成员函数!但只能调用派生类中从该基类继承过来的那部分成员函数! 虚函数的特性与调用 派生类对象中虚函数的调用━━方法㈠: 派生类对象的虚函数也是成员函数,可按一般成员函数的方式调用!即:可通过派生类对象的对象名、对象指针、对象引用来调用!调用过程与一般成员函数的调用过程相同!由此可见,这种调用方式无法体现虚函数的特性! 派生类对象中虚函数的调用━━方法㈡: 可通过基类的对象指针、基类的对象引用来调用派生类对象的虚函数!调用过程:调用的是派生类中的虚函数!若派生类中没有重新定义该虚函数,则调用的是上一层基类中的该虚函数;若在这一层基类中也没有重新定义该虚函数,就继续往上一层寻找 …
您可能关注的文档
- 土地信息系统数据库数据模型幻灯片.ppt
- 土建初中级职称法规幻灯片.ppt
- 土建造价员识图课件.ppt
- 土建施工员岗位实务知识PPT课件.ppt
- 土木工程专业经典幻灯片04建筑面积计算.ppt
- 土建安装电气识图全教程课件.ppt
- 土木工程-铁道概论幻灯片ppt.ppt
- 土木工程施工(图文并茂、通俗易懂)PPT课件.ppt
- 土木工程施工装饰工程幻灯片.ppt
- 土壤肥料学完整幻灯片.ppt
- 专题04 天气与气候(期末真题汇编,广东专用)(解析版).docx
- 专题04 中国的经济发展(百题精选)(期末真题汇编)(原卷版).docx
- 专题05 建设美丽中国(专项训练)(原卷版).docx
- 专题05 建设美丽中国(专项训练)(解析版).docx
- 专题05 居民与文化 发展与合作(百题精选)(期末真题汇编)(解析版).docx
- 2024年下半年教师资格考试中学《教育知识与能力》真题(含答案和解析).docx
- 专题05 居民与文化 发展与合作(百题精选)(期末真题汇编)(原卷版).docx
- 专题05 居民与文化 发展与合作(期末真题汇编,广东专用)(解析版).docx
- 专题05 居民与文化 发展与合作(期末真题汇编,广东专用)(原卷版).docx
- 统编版七年级语文上册课件《雨的四季》.pptx
原创力文档


文档评论(0)