电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

C++面向对象程序设计 教学课件 ppt 作者 朱战立 张玉祥 C++6

18页
  • 卖家[上传人]:E****
  • 文档编号:89343113
  • 上传时间:2019-05-23
  • 文档格式:PPT
  • 文档大小:94.50KB
  • / 18 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第六章 运行时的多态性和抽象类,运行时多态性概念 滞后联编和虚函数 利用虚函数设计具有运行多态性程序的方法,多态性,定义 相同对象收到相同消息,不同对象收到相同消息时,产生不同的处理结果。 分类 重载多态性:同一个类中成员函数重载 继承多态性:派生类对基类的覆盖和不覆盖实现 运行时多态性:对一个类层次来说,动态确定的类层次中的对象不同,则对象调用成员函数不同。 参数多态性:用参数方法决定一个类的数据类型,模板实现。,滞后联编和运行时多态性,联编就是将一个标识符名和一个存储地址联系在一起。 早期联编是在源程序编译时进行联编。 滞后联编就是在程序运行时进行联编。在运行时才根据当时具体的取值确定对象所属类层次中的某个类的编译方法。 运行时的多态性是指系统在运行时才具体确定对象所属类层次中的某个类,从而确定外部程序所发消息的匹配对象。,滞后联编和运行时多态性,C+语言既兼容早期联编又支持滞后联编的编译方法。 C+语言是在C语言基础上的扩充和发展。 滞后联编的语言的缺点是程序运行速度慢。 C+语言采用折中方法: 凡是虚函数(前边标有关键字virtual的成员函数),采用滞后联编的方式编译; 其它

      2、成员函数,采用早期联编的方式编译 一个成员函数是否采用滞后联编由程序设计人员决定,虚函数定义,声明虚函数的语句格式为: virtual ; 只有在类层次中才存在虚函数。 一般在基类中按如上格式声明某成员函数为虚函数,在派生类中名字、参数个数、参数类型和返回类型都相同的成员函数自动视作虚函数。 派生类中声明的虚函数,其成员函数名、参数个数、参数类型以及返回值类型要求和基类中声明的虚函数完全一样 要利用赋值兼容,要求派生类必须从基类公有派生。,虚函数运行时多态性,虚函数实现运行时多态性的设计方法: 设计一个类层次,并在类层次中定义一个或一个以上的虚函数。 在外部程序中定义基类的指针对象。 程序中既可以把基类对象的地址(或指针值)赋给基类的指针对象,也可以把派生类对象的地址(或指针值)赋给基类的指针对象。 当外部程序发送的消息是虚函数时,若此时基类指针对象指向基类对象时,系统就调用基类中的成员函数;若此时基类指针对象指向派生类对象时,系统就调用派生类中的成员函数。 如果没有定义虚函数,即使指针指向派生类,调用的仍然是基类中的成员函数。,例6.1 虚函数和派生类,#include class

      3、A public: A(void) virtual void vf1(void)const / 虚函数 cout “基类的vf1()函数“ endl; void f2(void)const /成员函数 cout “基类的f2()函数“ endl; ; class AA: public A public: AA(void),void vf1(void)const /虚函数 cout vf1(); /调用基类的vf1()函数 pa-f2(); /调用基类的f2()函数 AA myAA; pa = /调用派生类的vf1()函数 ,程序运行结果: 基类的vf1()函数 基类的f2()函数 派生类的vf1()函数 派生类的f2()函数,虚析构函数,引入原因 如果外部程序定义了动态对象,当外部程序结束时,要使用delete运算符删除动态对象。如果外部对象利用赋值兼容规则,将动态申请的派生类对象地址赋给了基类对象指针,则系统自动调用的是基类的析构函数。有可能引起内存泄漏(即只释放了派生类对象的基类子对象动态内存空间,而派生类对象的其它动态内存空间没有被释放)问题。 解决:虚析构函数可以解决这样的内存

      4、泄漏问题,例6.2 虚析构函数,#include #include class A public: A(void) virtual A(void) /正确方法 cout “基类析构函数“ endl; ; class AA: public A private: char *aa; int length; public: AA(char *message); AA(void); ;,AA:AA(char *message): A() length = strlen(message) + 1; aa = new charlength; /动态申请数据成员的内存空间 strcpy(aa, message); AA:AA(void) delete aa; /动态释放数据成员的内存空间 cout “派生类析构函数“ endl; void main(void) A *pa = new AA(“Hello“); delete pa; /释放指针pa所指对象的内存空间 程序运行结果: 派生类析构函数 基类析构函数,纯虚函数和抽象类,抽象类 定义:没有具体对象存在的类。 设计:用纯虚函数方法。 特点:抽象

      5、类中含有一个或一个以上的纯虚函数。 设计原因 从各个派生类中抽取共同成员构成的基类只对应一个抽象对象概念。 一组对象类中成员变量定义基本没有相同之处,成员函数实现的定义不同,但概念类同。定义抽象类作为类层次的根,并为这组对象提供公共接口(纯虚函数)。 实现运行时多态性。,纯虚函数和抽象类,纯虚函数 在类中声明为虚函数、并且在声明它的类中没有函数体定义的成员函数。其定义必须在派生类中给出。 声明格式 virtual = 0; 当一个类层次的基类中定义有纯虚函数时,如果它的某个 派生类中不覆盖该纯虚函数,则派生类仍被认为是抽象类。 不能在一个以非抽象类产生的派生类中定义纯虚函数。 派生类覆盖基类中定义的纯虚函数时,前面加或不加virtual均可以。,例6.3 纯虚函数实现,#include class Shape public: virtual void draw() = 0; ; class Rectangle: public Shape public: void draw() cout“绘制矩形”endl; ; class Circle : public Shape public: v

      6、oid draw() cout“绘制圆”endl; ;,void main(void) Shape *p; p = new Rectangle(); p-draw(); p=new Circle(); p-draw(); Rectangle; r. draw(); Circle c; c.draw(); / Shape s; /错误 / s .draw(); /错误 ,设计举例,设计要求 设计能同时存储学校教学人员和非教学人员的异质单链表类。,【例6.1】 大学人员问题。 设计要求:大学人员分为两类,一类是教学人员,一类是非教学人员,这两类人员的信息管理系统中,一部分信息内容是相同的,但另一部分信息内容是不相同的。设教学人员的信息包括姓名、年龄和专业编号,非教学人员的信息包括姓名、年龄和业绩评级。现要求设计一个能同时存储学校教学人员和非教学人员的异质单链表类,并设计一个测试程序进行测试。 设计:赋值兼容规则指出,可以把指向派生类对象的指针或者把派生类对象的地址赋给基类对象的指针。据此,可以把学校人员信息设计成类层次,其中基类Person包括教学人员和非教学人员的相同信息,即姓名和年龄,公有派生类Professor包括教学人员的特殊信息专业编号,公有派生类Staff包括非教学人员的特殊信息业绩评级。另外,按照运行时的多态性设计方法,把基类Person中的成员函数CreatNode()和Print()设计成虚函数。,

      《C++面向对象程序设计 教学课件 ppt 作者 朱战立 张玉祥 C++6》由会员E****分享,可在线阅读,更多相关《C++面向对象程序设计 教学课件 ppt 作者 朱战立 张玉祥 C++6》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结 2022年家长会心得体会集合15篇
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.