电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

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

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

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

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

第六章 运行时的多态性和抽象类,运行时多态性概念 滞后联编和虚函数 利用虚函数设计具有运行多态性程序的方法,多态性,定义 相同对象收到相同消息,不同对象收到相同消息时,产生不同的处理结果。 分类 重载多态性:同一个类中成员函数重载 继承多态性:派生类对基类的覆盖和不覆盖实现 运行时多态性:对一个类层次来说,动态确定的类层次中的对象不同,则对象调用成员函数不同。 参数多态性:用参数方法决定一个类的数据类型,模板实现。,滞后联编和运行时多态性,联编就是将一个标识符名和一个存储地址联系在一起。 早期联编是在源程序编译时进行联编。 滞后联编就是在程序运行时进行联编。在运行时才根据当时具体的取值确定对象所属类层次中的某个类的编译方法。 运行时的多态性是指系统在运行时才具体确定对象所属类层次中的某个类,从而确定外部程序所发消息的匹配对象。,滞后联编和运行时多态性,C+语言既兼容早期联编又支持滞后联编的编译方法。 C+语言是在C语言基础上的扩充和发展。 滞后联编的语言的缺点是程序运行速度慢。 C+语言采用折中方法: 凡是虚函数(前边标有关键字virtual的成员函数),采用滞后联编的方式编译; 其它成员函数,采用早期联编的方式编译 一个成员函数是否采用滞后联编由程序设计人员决定,虚函数定义,声明虚函数的语句格式为: virtual ; 只有在类层次中才存在虚函数。 一般在基类中按如上格式声明某成员函数为虚函数,在派生类中名字、参数个数、参数类型和返回类型都相同的成员函数自动视作虚函数。 派生类中声明的虚函数,其成员函数名、参数个数、参数类型以及返回值类型要求和基类中声明的虚函数完全一样 要利用赋值兼容,要求派生类必须从基类公有派生。,虚函数运行时多态性,虚函数实现运行时多态性的设计方法: 设计一个类层次,并在类层次中定义一个或一个以上的虚函数。 在外部程序中定义基类的指针对象。 程序中既可以把基类对象的地址(或指针值)赋给基类的指针对象,也可以把派生类对象的地址(或指针值)赋给基类的指针对象。 当外部程序发送的消息是虚函数时,若此时基类指针对象指向基类对象时,系统就调用基类中的成员函数;若此时基类指针对象指向派生类对象时,系统就调用派生类中的成员函数。 如果没有定义虚函数,即使指针指向派生类,调用的仍然是基类中的成员函数。,例6.1 虚函数和派生类,#include class 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运算符删除动态对象。如果外部对象利用赋值兼容规则,将动态申请的派生类对象地址赋给了基类对象指针,则系统自动调用的是基类的析构函数。有可能引起内存泄漏(即只释放了派生类对象的基类子对象动态内存空间,而派生类对象的其它动态内存空间没有被释放)问题。 解决:虚析构函数可以解决这样的内存泄漏问题,例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所指对象的内存空间 程序运行结果: 派生类析构函数 基类析构函数,纯虚函数和抽象类,抽象类 定义:没有具体对象存在的类。 设计:用纯虚函数方法。 特点:抽象类中含有一个或一个以上的纯虚函数。 设计原因 从各个派生类中抽取共同成员构成的基类只对应一个抽象对象概念。 一组对象类中成员变量定义基本没有相同之处,成员函数实现的定义不同,但概念类同。定义抽象类作为类层次的根,并为这组对象提供公共接口(纯虚函数)。 实现运行时多态性。,纯虚函数和抽象类,纯虚函数 在类中声明为虚函数、并且在声明它的类中没有函数体定义的成员函数。其定义必须在派生类中给出。 声明格式 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: void 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****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.