欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

    面向对象程序设计多态.ppt

    • 资源ID:263552       资源大小:746.50KB        全文页数:16页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向对象程序设计多态.ppt

    面向对象程序设计,目录,双击添加标题文字,概念、实现及代码,概念,同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针或引用,来调用实现派生类中的方法。,代码,class A public:virtual void foo()cout foo();return 0;,A,B,pa,目录,双击添加标题文字,应用,影片出租店案例需要计算每位顾客的消费金额并打印报表。操作者录入影片信息、租期时长,程序根据租赁时长和影片信息计算出费用。其中,影片分为:VCD、DVD。由于光碟品质升级,影片类型后期需要添加BD(蓝光光碟)。基于业务考虑,程序除了要计算费用,还要计算客户积分。,实现,class Diskpublic:virtual void caclRent(int days);class DVD:public Diskpublic:void caclRent(int days)int cost=days*3;cout该DVD的租期为days天,租金是:cost元。endl;/main.cppdouble caclRent(Disk,目录,双击添加标题文字,实现迟后联编的条件,基于继承体系成员函数使用virtual修饰,定义为虚函数子类重写(override)父类的成员函数通过对象指针或者对象引用调用,class Basepublic:virtual void foo()coutfoo();,virtual有什么用,先看看这段代码:class Baseint data;public:void foo()/如果加上virtual,结果如何?coutIn base class!endl;int main()coutsizeof(Base)endl;若类中有虚函数,创建对象时编译器会为其加上一个虚函数表。所有使用virtual修饰的函数,其入口地址都会存入虚函数表。,Base*base=new Base();base-foo();,Base*base=new Base();Base:foo(base);,Base*base=new Base();base-foo();,Base*base=new Base();base-vptr0();,无virtual,有virtual,为什么要使用指针/引用,在单继承体系中,子类和父类共用一个虚函数表,其中子类中定义的虚函数添加在父类虚函数的后面。如前述案例中,子类对象内存空间如图:对于对象,一但内存空间分配完毕,则虚函数表中函数指针所指向的函数就已经确定;而如果使用指针来访问,由于指针所指对象不同,因此实际使用的虚函数表也不同,相应的实际调用的函数也就不一样。,多态优缺点,优点:提供了把接口与实现分开的一种方法;提高了代码的组织性和可读性,更重要的是它使软件的可扩充性有了充分的提高;是OOP的一个重要特征,提供了丰富的逻辑关系清晰的描述对象方法的手段,提高了软件功能和版本进化的设计维护能力。缺点:降低了程序执行的效率。,与其它语言对比,JavaJava中没有虚函数概念,或者说,Java中所有的成员函数都是虚函数,无需额外声明。Java中的对象只能分配在堆(Heap)中,然后在栈中用引用(reference)指向之,因此Java中自然实现动态绑定。C#C#中virtual和C+中类似。C#中默认情况下不允许使用指针,对象内存分配上类似于JavaC#中可以通过指定编译器选项,并使用unsafe关键字从而使用指针,但一般只用于编写native程序;对于托管程序,并不提倡使用指针。,感谢您的关注!,

    注意事项

    本文(面向对象程序设计多态.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开