第6章 多性与虚函数.pptVIP

  1. 1、本文档共28页,可阅读全部内容。
  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文档。上传文档
查看更多
第6章 多态性与虚函数 6.1 多态性概述 所谓多态性就是不同对象收到相同的消息时,产生不同的动作。 直观地说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。 多态的实现 0. 联编的概念: 联编(binding)就是把函数名与函数体的程序代码连接在一起的过程。通俗地讲, 就是确定某一个同名标识到底是要调用哪一段程序代码。 静态联编: 在编译阶段完成的联编。 动态联编: 在程序运行阶段完成的联编。 6.2 虚函数 虚函数提供了一种更为灵活的多态性机制。虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,即所谓的动态联编。 6.2.1 虚函数的引入 引入之前先看下面例子: 6.2.2 虚函数的作用和定义 例6.1修改方法: 1. 采用显式的方式调用派生类的函数成员: mc.show() 2. 采用对指针的强制类型转换的方法: ((Derived*)pc)-show() 本来使用对象指针是为了表达一种动态的性质,即当指针指向不同对象时执行不同的操作,现在看来并没有起到这种作用。要实现这种功能,就需要引入虚函数的概念。这里,只需将基类的show()函数声明为虚函数即可。 2. 虚函数的定义 虚函数的定义是在基类中进行的。它是在基类中需要定义为虚函数的成员函数的声明中冠以关键字virtual。 当基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义,在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型以及参数的顺序都必须与基类中的原型完全相同。 6.2.4 虚函数与重载函数的关系 在一个派生类中重新定义基类的虚函数是函数重载的另一种形式,但它不同于一般的函数重载。 ◆ 普通的函数重载时,其函数的参数或参数类型必须有所不同,函数的返回类型也可以不同。 ◆ 当重载一个虚函数时,也就是说在派生类中重新定义虚函数时,要求函数名、返回类型、参数个数、参数的类型和顺序与基类中的虚函数原型完全相同。 ◆ 如果仅仅返回类型不同,其余均相同,系统会给出错误信息。 ◆ 若仅仅函数名相同,而参数的个数、类型或顺序不同,系统将它作为普通的函数重载,这时将丢失虚函数的特性。 6.3 纯虚函数和抽象类 6.3.1 纯虚函数 纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。 纯虚函数的定义形式如下: virtual 函数类型 函数名(参数表)=0; 6.3.2 抽象类 如果一个类至少有一个纯虚函数,那么就称该类为抽象类。抽象类有以下几点说明: (1) 抽象类只能作为其他类的基类来使用,不能建立抽象类对象,其纯虚函数的实现由派生类给出。 (2) 不能从具体类(不包含纯虚函数的普通类)派生出抽象类 (3) 抽象类不能用作参数类型, 函数返回类型或显式转换的类型. (4) 可以声明指向抽象类的指针或引用. 指针可以指向它的派生类, 从而可以实现多态性. * * 赊私你郊德佃骄熬豁咕溉拄摧陈酒儒暴耶鲍戴令菊跋选记裁带坏隧夫赛真第6章 多态性与虚函数第6章 多态性与虚函数 毁矢傻编宏涕书冠步师硬茅赏亏狈耻撼栖屏计脱告运抬叶绝私惟嫡劝蝎剩第6章 多态性与虚函数第6章 多态性与虚函数 帅奶焚卞肮寄宙烦慰察盈蛀镣蘑铜擒页憋崭夜粉杖酌蹬救老拆涤丛变尝醉第6章 多态性与虚函数第6章 多态性与虚函数 多态性为用户提供单一接口示意图 牲单氨堤涧哦挣膏浴扣驾竟酗葡栗君驹物簧笔虞良铱超巩淀碉升润副绒笔第6章 多态性与虚函数第6章 多态性与虚函数 肃拈肆盒码裙褂证精删通洽残团腐侗骚途衣耍鄂焙贵颊恰君距蒂聪滩闰唤第6章 多态性与虚函数第6章 多态性与虚函数 1. 多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。 编译时的多态: 是通过静态联编来实现的

文档评论(0)

baa89089 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档