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

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

ID:50041720

大小:94.50 KB

页数:18页

时间:2020-03-08

C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++6.ppt_第1页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++6.ppt_第2页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++6.ppt_第3页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++6.ppt_第4页
C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++6.ppt_第5页
资源描述:

《C++面向对象程序设计 教学课件 作者 朱战立 张玉祥 C++6.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章 运行时的多态性和抽象类运行时多态性概念滞后联编和虚函数利用虚函数设计具有运行多态性程序的方法多态性定义-相同对象收到相同消息,不同对象收到相同消息时,产生不同的处理结果。分类重载多态性:同一个类中成员函数重载继承多态性:派生类对基类的覆盖和不覆盖实现运行时多态性:对一个类层次来说,动态确定的类层次中的对象不同,则对象调用成员函数不同。参数多态性:用参数方法决定一个类的数据类型,模板实现。滞后联编和运行时多态性联编就是将一个标识符名和一个存储地址联系在一起。早期联编是在源程序编译时进行联编。滞后联编就是在程序运行时进行联编。在运行时才根据当时具体的取值确定对象所属类

2、层次中的某个类的编译方法。运行时的多态性是指系统在运行时才具体确定对象所属类层次中的某个类,从而确定外部程序所发消息的匹配对象。滞后联编和运行时多态性C++语言既兼容早期联编又支持滞后联编的编译方法。C++语言是在C语言基础上的扩充和发展。滞后联编的语言的缺点是程序运行速度慢。C++语言采用折中方法:凡是虚函数(前边标有关键字virtual的成员函数),采用滞后联编的方式编译;其它成员函数,采用早期联编的方式编译一个成员函数是否采用滞后联编由程序设计人员决定虚函数-定义声明虚函数的语句格式为:virtual<成员函数原型>;只有在类层次中才存在虚函数。一般在基类中按如上格

3、式声明某成员函数为虚函数,在派生类中名字、参数个数、参数类型和返回类型都相同的成员函数自动视作虚函数。派生类中声明的虚函数,其成员函数名、参数个数、参数类型以及返回值类型要求和基类中声明的虚函数完全一样要利用赋值兼容,要求派生类必须从基类公有派生。虚函数-运行时多态性虚函数实现运行时多态性的设计方法:设计一个类层次,并在类层次中定义一个或一个以上的虚函数。在外部程序中定义基类的指针对象。程序中既可以把基类对象的地址(或指针值)赋给基类的指针对象,也可以把派生类对象的地址(或指针值)赋给基类的指针对象。当外部程序发送的消息是虚函数时,若此时基类指针对象指向基类对象时,系统就

4、调用基类中的成员函数;若此时基类指针对象指向派生类对象时,系统就调用派生类中的成员函数。如果没有定义虚函数,即使指针指向派生类,调用的仍然是基类中的成员函数。例6.1虚函数和派生类#includeclassA{public:A(void){}virtualvoidvf1(void)const//虚函数{cout<<"基类的vf1()函数"<

5、nst//虚函数{cout<<"派生类的vf1()函数"<vf1();//调用基类的vf1()函数pa->f2();//调用基类的f2()函数AAmyAA;pa=&myAA;//pa当前指向派生类对象myAApa->vf1();//调用派生类的vf1()函数pa->f2();//调用基类的f2()函数//myA.vf1();//调用基类的vf1()函数

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

7、#includeclassA{public:A(void){}virtual~A(void)//正确方法{cout<<"基类析构函数"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。