下载此文档

继承与多态.ppt


文档分类:IT计算机 | 页数:约26页 举报非法文档有奖
1/26
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/26 下载此文档
文档列表 文档介绍
继承与多态
第1页,此课件共26页哦
第8章 继承与多态
静态多态的实现
动态多态的实现
纯虚函数与抽象基类
静态多态的实现
动态多态的实现
动态多态的实现
掌握静态多态的实现
掌握动态多态的实现
熟悉纯虚函数与抽象基; //虚函数draw,负责画“circle”
……
};
派生类
第11页,此课件共26页哦
多态性
动态多态的实现方法
1. 虚函数
第8章 继承与多态
使用虚函数时,需要注意以下3点
说明某一函数成员为虚函数,方法是在说明前加关键字“virtual”。
派生类中虚函数处的关键字virtual可以省略,但基类处的不可省
调用虚函数时,系统对它将采用动态联编的方式进行处理。
第12页,此课件共26页哦
多态性
动态多态的实现方法
2. 动态联编的机制
第8章 继承与多态
使用动态联编时,确定要调用的函数有两种方式
line ln1; circle cir1; triangle tri1;
(); (); ();
通过类对象
第13页,此课件共26页哦
多态性
动态多态的实现方法
2. 动态联编的机制
第8章 继承与多态
使用动态联编时,确定要调用的函数有两种方式
graphelem *pObj;
line ln1; circle cir1; triangle tri1;
pObj=&lin1; pObj->draw();
pObj=&cir1; pObj->draw();
pObj=&tri1; pObj->draw();
通过指针
第14页,此课件共26页哦
多态性
动态多态的实现方法
2. 动态联编的机制
第8章 继承与多态
动态联编的基本步骤
在编译过程中,扫描到表达式pb->f()时,首先检查f()是否为虚函数(若f()不是虚函数,则按静态联编处理,在编译时必须为f()确定对应的函数体代码);
(2)若f()为虚函数,则仅把与f()同原型的虚函数的地址信息等列表待查;
(3)在程序运行阶段,当程序执行到表达式pb->f()时,根据指针当前所指向的对象类属,来决定这时的f()应执行哪个类中的哪个f(),从而决定执行哪个函数体。
第15页,此课件共26页哦
多态性
动态多态的实现方法
2. 动态联编的机制
第8章 继承与多态
虚函数的动态联编的实现,主要依赖于下面一些条件:
1)基类CB 可有多个派生类CD1,CD2,……,CDn;
2)CB 类指针pb 可以指向CB 的对象,也可以指向CD1,CD2,……CDn的对象;
3)CB 类和CD1,CD2,……CDn 类可以有同样原型(而函数体各异)的函数成员f()(虚函数);
4)运行着的程序根据查对当前指针pb所指向的对象是属于哪个类的,再决定到底执行哪个f()。
第16页,此课件共26页哦
多态性
动态多态的实现方法
2. 动态联编的机制
第8章 继承与多态
采用虚函数对于程序有益之处在于。
1)可使程序简单易读。
2)它使得程序模块间的独立性加强。
3)增加了程序的易维护性。
4)提高了程序中“信息隐藏”的等级。
第17页,此课件共26页哦
多态性
纯虚函数和抽象基类
第8章 继承与多态
抽象基类的概念是虚函数概念的自然引申,它是虚函数使用的一个更理想的形式。
virtual函数原型=0;
若在虚函数的原型后加上“=0”字样而替掉函数定义体(没有具体的实现),则这样的虚函数称为纯虚函数。
virtual void print()=0;
第18页,此课件共26页哦
多态性
纯虚函数和抽象基类
第8章 继承与多态
含有纯虚函数的类称为抽象基类。
抽象基类的设计意义在于:
基类并不是完整的类,它在程序中只起到一种框架的作用,它所包含的是与定积分计算相关的数据成员,和计算定积分的函数成员的格式:函数名,参数表,返回类型等等。
第19页,此课件共26页哦
多态性
纯虚函数和抽象基类
第8章 继承与多态
class inte_algo
{
//基类inte_algo
protected:
……
public:
inte_algo (float left, float right, int steps)
{
//基类构造函数
……
}
virtual void integr

继承与多态 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数26
  • 收藏数0 收藏
  • 顶次数0
  • 上传人文库新人
  • 文件大小1.50 MB
  • 时间2022-02-16