第14章多态性

第14章多态性

ID:44946292

大小:727.50 KB

页数:47页

时间:2019-11-05

第14章多态性_第1页
第14章多态性_第2页
第14章多态性_第3页
第14章多态性_第4页
第14章多态性_第5页
资源描述:

《第14章多态性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第14章多态性南开大学非计算机专业理工科面向对象程序设计课程课程内容安排(2课时)多态性的概念虚函数抽象类应用实例小结学习指导214.1多态性的概念在介绍如何在程序中实现多态之前,我们先给出一个实例来理解什么是多态。【例14-1】未实现多态性的程序。#includeusingnamespacestd;classShape{public:voidDraw(){cout<<"Drawshape"<

2、的概念classTriangle:publicShape{public:voidDraw(){cout<<"Drawtriangle"<

3、pe514.1多态性的概念显然,我们并不希望看到这样的结果。我们希望当执行func(c)时调用Circle类的Draw()函数,当执行func(t)时调用Triangle类的Draw()函数,当执行func(r)时调用Rectangle类的Draw()函数。这种能够根据对象的实际类型来调用该对象所属类的函数、而不是每次都调用基类中函数的特性,就是本章所要介绍的多态性。614.2虚函数14.2.1先期绑定和动态绑定传统的面向结构的编译器所产生的函数调用,采用“先期绑定”的方式。所谓“绑定”就是建立函数调用和函数本体的关联。如果绑定发生于程序运行之前(由编译器和连接器完成),则称为“先期

4、绑定”。面向对象程序设计语言采用“后期绑定”,也可叫“动态绑定”技术,即当调用某个对象的函数时,应该被执行的程序代码会根据对象的具体类型在执行期被确定下来。这是实现多态性的技术保证。想要实现多态,就要进行“后期绑定”,在C++中,实现“后期绑定”的机制是虚函数。714.2虚函数14.2.2虚函数的工作方式814.2虚函数在图14-1所示形状的类层次中,Circle类、Triangle类、Rectangle类都是从基类Shape派生出来的。每个类都有它自己的Draw()函数,并且绘制每种形状的Draw()函数都大不相同。当需要绘制形状时,把各派生类对象统一作为基类Shape的对象处理是

5、一种很好的方法。只需要简单地调用基类Shape的Draw()函数,而不必关心对象的实际类型,程序会动态地确定(即在执行时确定)调用哪个派生类的Draw()函数。为了使这种行为可行,把基类中的函数Draw()声明为虚函数,然后在每个派生类中重新定义Draw()使之能够绘制合适的形状。虚函数的声明方法是在基类的函数原型前加上关键字virtual。914.2虚函数【例14-2】将例14-1进行简单的修改,在基类的Draw()函数前加上关键字virtual#includeusingnamespacestd;classShape{public:virtualvoidDraw

6、()//将Draw()函数声明为虚函数{cout<<"Drawshape"<

7、ut<<"Drawrectangle"<

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

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

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