欢迎来到优知文库! | 帮助中心 分享价值,成长自我!
优知文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 优知文库 > 资源分类 > PPT文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:188238       资源大小:746.50KB        全文页数:16页
    • 资源格式: PPT        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录
    二维码
    扫码关注公众号登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

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

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

    注意事项

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

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 yzwku网站版权所有

    经营许可证编号:宁ICP备2022001189号-2

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。优知文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知优知文库网,我们立即给予删除!

    收起
    展开