- 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++多态篇 9.1多态性的概念 为什么允许派生类到基类的转化 安全 因为派生类一般比较大,而基类比较小。如果允许基类到派生类转化,转化后,基类就可能调用它实际上不存在的方法。 9.1多态性的概念 允许子类直接赋值给基类 允许子类的指针直接赋值给基类的指针 允许子类直接赋值给给基类的引用 9.1多态性的概念 例子zyuf好像很不合理,明明儿子在说话,可是程序却说是父亲在说话。 看另一个例子:speak 以上的情况就是静态联编或者叫静态绑定 静态绑定就是:在程序编译阶段,编译器会根据调用方法的对象的类型,直接把代码固定化。 9.1多态性的概念 现在要求在程序运行期间,根据对象属于的类别而调用不同的方法。 在运行期间,如果调用speak方法的对象属于person类,就打印“我会说话,但是不知道该说什么语言”。如果调用speak方法的的确是Chn,那么就打印“我说汉语!!!!”。 9.1多态性的概念 需要打破静态联编,打破静态联编的办法就是动态联编。 实现动态联编的方法很简单,在需要执行不同动作的函数前加关键字“virtual”。 原理:程序在编译阶段,看到一个方法前有virtual,那么编译器就在调用这个方法的语句中不进行绑定。直到程序运行时,根据调用对象属于的类别而调用合适的方法。 9.1多态性的概念 相同的函数名,相同的调用方式,能够根据调用者的身份(类别)不同,而表现出不同的动作,这样的技术就是多态。 被加上关键字“virtual”的类的成员函数(方法),就叫虚函数。 如果想实现多态,除有虚函数外,调用虚函数的对象必须是真是的本身。即是引用或者指针。 9.2虚函数 虚函数的特点 只有类的成员函数才能声明为虚函数,一般函数不行。 虚函数具有传递性,即如果父类的一个函数是虚函数,那么子类中与其同名的函数也是虚函数。 子类中的虚函数前的virtual一般可以省略,可是为了程序的易读性。一般推荐大家加上。 内联函数不能是虚函数。 析构函数一般定义为虚函数比较安全。 9.3纯虚函数与抽象类 C++程序设计的最终目标:程序设计与现实世界的对应。 比如说:现实中有汽车,火车,自行车,那么在程序中就也要有相应的类。 为了代码共享,逐渐向上总结特点,对这些对象进行概念化。 终于,到达了顶端---交通工具。 9.3纯虚函数与抽象类 交通工具类的定义 9.3纯虚函数与抽象类 Move不能实现。 交通工具的所有子类还必须有这样的功能。而且不同的类别Move的方式都不相同。 9.3纯虚函数与抽象类 纯虚函数的声明格式: 9.3纯虚函数与抽象类 特点 包含有纯虚函数的类,称为抽象类 抽象类至少包含一个纯虚函数 抽象类一般表示人们思想中的概念级别的东西。 抽象类不能实例化,也就是抽象类不能有对象 抽象的作用是让别人派生的,并且强制基类一定要实现纯虚函数。 如果子类不实现父类的纯虚函数,它也会变为抽象类。 9.3纯虚函数与抽象类 最后注意:抽象类不能作为函数的参数,函数的返回类型,因为它不能实例化 但是可以定义抽象类的引用与指针,因为引用与指针并不是类对象的本体,只是这些对象的一根链子。 * 第九章 多态性与虚函数 * C++程序设计----第九章 多态性与虚函数 例子:zyuf 例子:diaoyong 例子:shape 汽车类 飞机类 交通工具类 交通工具怎么移动呀? 解决不同子类具有不同表现的这些方法。就是让它称为虚函数。----前面加virtual 不能实现问题的解决----让它称为纯虚函数。 关键字 没有任何意义 只是一个标志 例子:9-10
文档评论(0)