C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt

C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt

ID:50297350

大小:157.00 KB

页数:37页

时间:2020-03-07

C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt_第1页
C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt_第2页
C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt_第3页
C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt_第4页
C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt_第5页
资源描述:

《C++面向对象程序设计 教学课件 作者 李素若 任正云 张牧 陈万华 编著第6章 多态性与虚函数.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章多态性与虚函数主要内容6.1多态性概述6.2子类型6.3虚函数6.4纯虚函数和抽象类教学安排课时:2学时难点:多态性重点:虚函数教学方法:多媒体教学,通过大量实例讲解基本的概念和语法习题:见本课件最后6.1多态性概述所谓多态性就是不同对象收到相同的消息时,产生不同的动作。直观地说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,从而可以使用相同的调用方式来调用这些具有不同功能的同名函数。6.1.1多态的分类C++中的多态性可以分为四类:参数多态(函数模板、类模板)包含多态(虚函数)重载多态(函数重

2、载、运算符重载)强制多态(强制类型转换)。前面两种统称为通用多态,而后面两种统称为专用多态。6.1.2多态的实现多态性的实现和联编这一概念有关。所谓联编就是把函数名与函数体的程序代码连接(联系)在一起的过程。联编分成两大类:静态联编和动态联编。静态联编优点:调用速度快,效率高,但缺乏灵活性;动态联编优点:运行效率低,但增强了程序灵活性。C++为了兼容C语言仍然是编译型的,采用静态联编。为了实现多态性,利用虚函数机制,可部分地采用动态联编。6.1.2多态的实现多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。编

3、译时的多态是通过静态联编来实现的。静态联编就是在编译阶段完成的联编。编译时多态性主要是通过函数重载和运算符重载实现的。运行时的多态是用动态联编实现的。动态联编是运行阶段完成的联编。运行时多态性主要是通过虚函数来实现的。6.2子类型概念子类型:有一个特定的类型U,当且仅当它至少提供了类型X的行为时,称类型U是类型X的子类型。如果类U从类X公有继承,则类U将继承了X的行为,同时类U还可以根据需求增加新的行为。这意味着类U提供了类X的行为,根据定义,类U是类X的子类型。6.2.1子类型作用类型适应:类型U的对象能被用于类型X的对

4、象所能使用的场合,称为类型U适应类型X。类型适应的四种情况:在使用X类型对象的场合,可以使用U类型对象;在使用X*指针或X&引用的场合,可以使用U*指针或U&引用;在使用使用constX*常指针或constX&常引用的场合,可以使用constU*常指针或constU&常引用;6.2.1子类型作用子类型作用:一个函数可被重用于处理X类型的对象和X的各个子类型的对象,而不必为处理这些子类型的对象去重载该函数,可以减轻程序人员编写程序代码的负担。例6.1:分析下列程序的输出结果。例6.1子类型静态束定实例#include

5、tream.h>classA{public:A(){a=0;}A(inti){a=i;}voidPrint(){cout<

6、b(9,5);Aaa(5);aa=bb;aa.Print();A*pa=newA(8);B*pb=newB(1,2);pa=pb;pa->Print();fun(bb);}6.3虚函数虚函数提供了一种更为灵活的多态性机制。虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,即所谓的动态联编。6.3.1虚函数的引入例6.2没有引入虚函数的实例1。#includeclassA{public:voidshow(){cout<<"A";}};classB:publicA{pub

7、lic:voidshow(){cout<<"B";}};main(){Aa,*pc;Bb;pc=&a;pc->show();pc=&b;pc->show();return0;}例6.3没有引入虚函数的实例2#includeclassBase{public:Base(intx,inty){a=x;b=y;}voidshow(){cout<<"Base---------------";cout<

8、Base{public:Derived(intx,inty,intz):Base(x,y){c=z;}voidshow(){cout<<"Derived-------------------";cout<<"c="<

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

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

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