多态及虚函数(java).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文档。上传文档
查看更多
格式: virtual 函数类型 函数名(形参表) { 函数体 } 只有通过基类指针或者引用访问虚函数时才能会进行动态联编。 void main() { Dog ralph; Pet* p1=ralph; Pet p2=ralph; Pet p3; p1-speak(); p2.speak(); p3.speak(); } 练习:应用c++的多态性,计算三角形,矩形和圆的面积。 多态性概述 虚函数 虚函数举例 Speak() miao bark pet 概念:统一接口,隐藏不同的实现。 好处:可扩展性好,维护简单。 实现: 函数重载 虚函数 模版 Pet *p p=raphal; p-speak(); Class Pet{ public: void speak() {cout“aa”endl;} }; Class Dog:public Pet{ public: void speak() { cout“bark!”endl; } }; Void main(){ Dog raphal; raphal.speak(); } 解决:晚绑定(late binding),本书中的动态联编。运行时再对函数名和函数体进行连接。 问题:不能输出程序想要的结果。 原因:早绑定(early binding),本书中的静态联编。在编译时候根据参数的类型,把函数名和相应的函数体进行连接。 返回 注意:类内说明,类外定义的时候,只在说明时使用virtual关键词即可。 数据 成员 指针 虚函数指针 虚函数指针 虚函数指针 每个虚函 数对应数据 虚函数指针 vtable dothis() dothat() domore() doless() p-domore() 通过指针调用 虚函数 只有类的成员函数才能说明为虚函数。 静态成员函数不能作为虚函数。 数据 成员 指针 虚函数指针 虚函数指针 虚函数指针 每个虚函 数对应数据 虚函数指针 vtable dothis() dothat() domore() doless() p-domore() 通过指针调用 虚函数 只有类的成员函数才能说明为虚函数。 静态成员函数不能作为虚函数。 内联函数不能作为虚函数。 构造函数不能定义虚函数 函数在基类中被声明为虚函数,则在每个派生类中也是虚函数。 通过虚函数来使用多态机制时,派生类应该从它的基类公有(public)派生。

文档评论(0)

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

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

1亿VIP精品文档

相关文档