C++课件5第12章.pptVIP

  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文档。上传文档
查看更多
第12章 多态性与虚函数 12.1 多态性的概念 12.2 一个典型的例子 12.3 虚函数 12.4 纯虚函数与抽象类 12.1 多态性的概念 多态性:每个对象可以用自己的方式去响应 共同的消息。 例如:双击鼠标左键 从系统实现的角度看,多态性分为两类: 静态多态性:又称编译时的多态性 如:函数重载、运算符重载 动态多态性:又称运行时的多态性 如:虚函数(virtual function) 12.3 虚函数 12.3.1 虚函数的作用 12.3 虚函数 12.3.1 虚函数的作用 虚函数的作用: 虚函数的使用方法: 虚函数的使用方法: (1) 在基类用virtual声明成员函数为虚函数。在派生类 中重新定义此函数,为它赋予新的功能。 (2) 定义一个指向基类对象的指针变量,并使它指向同 一类族中需要调用该函数的对象。pt=stud1; (3) 通过该指针变量调用此虚函数,此时调用的就是指 针变量指向的对象中的同名函数。 pt-display( ); 虚函数VS虚基类 虚基类 1. 虚基类的作用 12.3.2 静态关联与动态关联 关联:一个函数名与一个类对象捆绑在一起 静态关联——函数重载, 编译阶段确定要 调用函数所属类。(早期关联) 动态关联——在运行阶段把虚函数和类对象“绑定”在一起。(滞后关联) 12.4 纯虚函数与抽象类 12.4.1 纯虚函数 纯虚函数:基类不需要此函数,只在基类中 为其派生类保留一个函数的名字,以便派生 类根据需要对它进行定义。 声明纯虚函数的一般形式是: virtual 函数类型 函数名 (参数表列) =0; 12.4.2 抽象类 抽象类(abstract class):不能也不需要用来定义对象 而只作为一种基本类型用作继承的类。由于它常用 作基类,通常称为抽象基类(abstract base class)。 凡包含纯虚函数的类都是抽象类。 一般在类的层次结构中,顶层或最上面的几层可以 是抽象基类,是本类族的公共接口。 多态性实质:在基类中声明成员函数为虚函数,根据需要在派生类中重新定义与基类同名的成员函数。实现一个接口,多种方法 例12.2 基类与派生类中有同名函数。 1.学生类有数据成员:姓名,学号,成绩 成员函数(行为),display(),构造函数 display实现输出该类的所有数据成员 2.从学生类公有派生出一个研究生类,其中新增加数据成员pay,构造函数,成员函数display(), display实现输出本类中所有数据成员 3.主函数中定义这两个类各自的对象,及指针变量,要求通过指针,调用这两个display(),函数实现信息的输出 例12.2 基类与派生类中有同名函数。 virtual void display( ); 基类用virtual声明,在类外定义虚函数时,不必再加virtual。 在派生类中重新定义虚函数 此时调用的就是指针变量指向的对象的同名函数 这一项之 前没有 使用虚函数后,能用同一个调用形式,调用基类和派生类的同名函数 什么时候需要使用虚函数? 1. 此成员函数所在的类会作为基类。 2.成员函数在类的继承后希望更改其功能。 3.对成员函数的调用是通过指针或引用去访问。 使用虚函数后,能用同一个调用形式,调用基类和派生类的同名函数 间接派生类中有重复的间接基类成员。能不能只保留一份成员呢? 并不是等于0,只告诉编译系统,在这里声明一个虚函数,留待派生类中定义后才能使用。 不具有函数体,不具备函数的功能,不能被调用 作用:通知编译系统,留待派生类中定义 * *

文档评论(0)

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

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

1亿VIP精品文档

相关文档