C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt

C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt

ID:50041131

大小:274.50 KB

页数:56页

时间:2020-03-08

C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt_第1页
C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt_第2页
C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt_第3页
C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt_第4页
C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt_第5页
资源描述:

《C++程序设计 工业和信息化普通高等教育十二五 规划教材立项项目 教学课件 作者 姚琳 C++程序设计第10章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++程序设计第10章多态性与虚函数北京科技大学信息基础科学系2021/7/251北京科技大学多态性(Polymorphism)是面向对象程序设计的主要特征之一。多态性对于软件功能的扩展和软件重用都有重要的作用。是学习面向对象程序设计必须要掌握的主要内容之一。2第十章多态性与虚函数主要内容:多态性的概念继承中的静态联编虚函数和运行时的多态纯虚函数和抽象类310.1多态性的概念2021/7/254北京科技大学面向对象程序设计中多态的表现总的来说,不同对象对于相同的消息有不同的响应,就是面向对象程序设计中的多态性。具体在程序中,多态性有两种表现的方式:同一个对象调用名字相同、

2、但是参数不同的函数,表现出不同的行为。在同一个类中定义的重载函数的调用,属于这种情况。不同的对象调用名字和参数都相同的函数,表现出不同的行为。在派生类的应用中,经常会看到这样的调用。5面向对象程序设计中多态的表现面向对象程序设计中多态性表现为以下几种形式:重载多态:通过调用相同名字的函数,表现出不同的行为。运算符重载也是一种重载多态。运行多态:通过基类的指针,调用不同派生类的同名函数,表现出不同的行为。许多面向对象程序设计的书籍中所说的多态性,就是这种多态。Pt->Draw();6多态的实现:联编一个具有多态性的程序语句(如Pt->Draw();),在执行的时候,必须确定

3、究竟是调用哪一个函数。也就是说,在执行的时候调用哪个函数是唯一地确定的。确定具有多态性的语句究竟调用哪个函数的过程称为联编(Binding),有的资料也翻译成“绑定”。7多态的实现:联编联编有两种方式:静态联编和动态联编在源程序编译的时候就能确定具有多态性的语句调用哪个函数,称为静态联编对于重载函数的调用就是在编译的时候确定具体调用哪个函数,所以是属于静态联编用静态联编实现的多态,也称为编译时的多态8多态的实现:联编动态联编则是必须在程序运行时,才能够确定具有多态性的语句究竟调用哪个函数用动态联编实现的多态,也称为运行时的多态911.2继承中的静态联编2021/7/251

4、0北京科技大学派生类对象调用同名函数在派生类中可以定义和基类中同名的成员函数。这是对基类进行改造,为派生类增加新的行为的一种常用的方法通过不同的派生类的对象,调用这些同名的成员函数,实现不同的操作,也是多态性的一种表现在程序编译的时候,就可以确定派生类对象具体调用哪个同名的成员函数。这是通过静态联编实现的多态11例10-1定义Circle类和Rectangle类为Shape类的派生类,通过Circle类和Rectangle类的对象调用重载函数getArea()显示对象的面积。//例10-1:shape.hclassShape{public:doublegetArea()c

5、onst;voidprint()const;};//Shape类定义结束12classCircle:publicShape{public:Circle(int=0,int=0,double=0.0);doublegetArea()const;//返回面积voidprint()const;//输出Circle类对象private:intx,y;//圆心座标doubleradius;//圆半径};//派生类Circle定义结束classRectangle:publicShape{public:Rectangle(int=0,int=0);//构造函数doublegetArea

6、()const;//返回面积voidprint()const;//输出Rectangle类对象private:inta,b;//矩形的长和宽};//派生类Rectangle定义结束13//例10-1:shape.cpp#includeusingnamespacestd;#include"shape.h"doubleShape::getArea()const{cout<<"基类的getArea函数,面积是";return0.0;}//Shape类getArea函数的定义voidShape::print()const{cout<<"BaseclassObj

7、ect"<

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

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

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