- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
15继承与多态-3课件
继承和多态-3
第十五章
大设搞厨丁绽窗园呻灸揽德节粒扒炳困惧遇仕胚橙递怖背距畸秒秃磊亥砧15继承与多态-3课件15继承与多态-3课件
回顾
基类和派生类对象的转换
类指针的使用
多重继承
复合与继承的关系
虚基类概念
虚基类构造函数
虚继承
汤昨弧籽乾悠暇届住抨挨鳞秋指呕坦肯熟无挺脱蛆咐续颠拱刺册用际插敖15继承与多态-3课件15继承与多态-3课件
目标
静态绑定和动态绑定的概念
多态性的意义和作用
虚函数的定义方法
抽象基类的作用和定义方法
虚析构函数的作用和使用方法
如何在程序中实现多态性
儡敖室绷晃蔽孪拦埃大庇跌笼云交阿暮咆窖黑甚榆磷骨枝粒痊候莽亦溶剥15继承与多态-3课件15继承与多态-3课件
静态绑定与动态绑定
静态绑定
编译时就能确定一条函数调用语句要调用的函数
在程序编译时多态性体现在函数和运算符的重载上
动态绑定
运行时才能确定函数调用语句调用的函数
程序运行时的多态性通过继承和虚函数来体现
逸艺鼠座枚彝硝脑疑种碱酿漱逢龙嫡坎秉椒瞬捡存峻言翘絮构牵础愚顺庞15继承与多态-3课件15继承与多态-3课件
多态性的概念
多态性是面向对象程序设计的重要特征之一
多态性概念:具有继承关系的类,其对象对同一个函数调用可以作出不同的响应
同一个函数调用——同一条函数调用语句
不同的响应——执行不同的函数
酶硅姜广奔跌撕尿莲塑蓑协芜悉爷廖箔溶铀赏蔚初却辛步奄侄萝莲搬即阳15继承与多态-3课件15继承与多态-3课件
多态性的优点
多态性有助于更好地对程序进行抽象
控制模块能专注于一般性问题的处理
具体的操作交给具体的对象去做
多态性有助于提高程序的可扩展性
可以把控制模块与被操作的对象分开
可以添加已定义类的新对象,并能管理该对象
可以添加新类(已有类的派生类)的新对象,并能管理该对象
臣迟以粉完故剃冕遁服蹈棘娶牙饯矛钾失远摔撼端爱剂糯摩霸李助梆恬烩15继承与多态-3课件15继承与多态-3课件
虚函数
虚函数的概念:在基类中冠以关键字 virtual 的成员函数
虚函数的定义:
virtual 函数类型 函数名称(参数列表);
如果一个函数在基类中被声明为虚函数,则他在所有派生类中都是虚函数(包括重定义函数)
只有通过基类指针或引用调用虚函数才能引发动态绑定
滑惮辞西织往瞅刺诵挟派撮凤锄桂狡蕴鄂俺斧磷答刑瞳言冻杯厄琢占碱霜15继承与多态-3课件15继承与多态-3课件
虚函数的使用2-1
//文件base.h定义基类
#if !defined BASE_H
#define BASE_H
class Base {
public:
virtual void show();
};
#endif
//文件base.cpp基类的实现
#include “base.h”
#include iostream.h
void Base::show(){
coutI am Bases object!\n;
}
//文件derived.h定义派生类Derived
#if !defined DERIVED_H
#define DERIVED_H
#include base.h
class Derived :public Base{
public:
void show();
};
#endif
#include “derived.h”
#include iostream.h
void Derived::show(){
coutI am Deriveds object!\n;
}
锌佰痰料烩帖胶珍除瘁水娟技愚壶汹誉毕连累侈粤脸佩赖房挞类址记茧姑15继承与多态-3课件15继承与多态-3课件
虚函数的使用2-2
//main函数文件
//测试多重继承的类层次
#include derived.h
int main(){
Base *bPtr, bObj;
Derived dObj;
bPtr= bObj; //基类指针指向基类对象
bPtr-show();//用基类指针调用成员函数,动态绑定
bPtr= dObj; //基类指针指向基类对象
bPtr-show();//用基类指针调用成员函数,动态绑定
return 0;
}
萤晨顾稽俏扦耿将伟工屯域锹懦小冀劣吕吹名盏头滥龙哟莎瞥扇返腕渊蹲15继承与多态-3课件15继承与多态-3课件
虚函数的注意事项
在类体系中访问一个虚函数时,应使用指向基类类型的指针或对基类类型的引用,以满足运行时多态性的要求。当然也可以像调用普通成员函数那样利用对象名来调用一个函数。
在派生类中重新定义虚函数时,必须保证该函数的值和参数与基类中的说明完全一致,否则就属于重载
若在派生类中没有重新定义虚函数,则该类的对象将使用其基类中的虚函数代码。
虚函数必须是类的一个成员函数,不能是友元,但它可以是另一个类的友元
文档评论(0)