C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx

C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx

ID:51777217

大小:533.29 KB

页数:42页

时间:2020-03-07

C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx_第1页
C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx_第2页
C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx_第3页
C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx_第4页
C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx_第5页
资源描述:

《C++面向对象程序设计(第二版) 教学课件 作者 张俊 Ch08-虚函数与多态性.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++与面向对象程序设计1面向对象程序设计第8章虚函数与多态性C++与面向对象程序设计2内容提要8.1虚函数virtualfunction8.2纯虚函数和抽象类abstractclass8.3多态性polymorphismC++与面向对象程序设计3第8章虚函数与多态性8.1概述C++与面向对象程序设计48.1.1回顾—赋值兼容规则public继承时,派生类对象是基类对象.C++与面向对象程序设计58.1.1回顾—赋值兼容规则基类对象可以赋值为派生类对象.对象切割(丢失了派生类的部分信息)LSP(L

2、iskovSubstitutionPrinciple)派生类应用于基类的场合三段论:规则+前提结论C++与面向对象程序设计68.1.1回顾—赋值兼容规则为避免丢失派生类对象的信息:基类指针和基类引用可以指向派生类对象.以基类名义存储派生类对象.好处:操作的统一C++与面向对象程序设计78.1.1示例—操作的统一例8.1:形状类的名称和面积C++与面向对象程序设计88.1.1示例—操作的统一例8.1:形状类的名称和面积C++与面向对象程序设计98.1.1示例—操作的统一例8.1:形状类的名称和面积

3、C++与面向对象程序设计108.1.1问题—派生类的个性没了?以基类名义存储的派生类对象怎么展现派生类的特点?示例欠缺:根据对象指针或对象引用所指对象的实际类型,调用正确的函数.绑定(binding)C++与面向对象程序设计118.1.1分析—关于绑定绑定:函数调用与函数定义之间的对应两种类型:静态绑定动态绑定C++与面向对象程序设计128.1.1分析—两种绑定方式别名发生时期静态关联staticbinding早期联编编译连接阶段动态关联dynamicbinding滞后联编运行阶段两种方式对比8

4、.1.2示例—静态绑定示例普通函数:C++与面向对象程序设计138.1.2示例—静态绑定示例基类指针对操作的调用C++与面向对象程序设计148.1.2小结—静态绑定规则在发生静态绑定时,所调用的函数由对象指针(或对象引用)的类型决定.C++与面向对象程序设计158.1.3示例—动态绑定示例我们希望:C++与面向对象程序设计168.1.3小结—动态绑定规则在发生静态绑定时,所调用的函数由对象指针(或对象引用)本身的类型决定.(只看表面)在发生动态绑定时,所调用的函数由对象指针(或对象引用)所指对象的

5、类型决定.(探究实质)C++与面向对象程序设计17C++与面向对象程序设计18第8章虚函数与多态性8.2虚函数C++与面向对象程序设计198.2.1虚函数(virtualfunction)定义的语法virtual(基类)成员函数原型;C++与面向对象程序设计208.2.1虚函数(virtualfunction)定义虚函数时不需virtual关键字。C++与面向对象程序设计218.2.1虚函数(virtualfunction)保持接口一致否则不认为是虚函数C++与面向对象程序设计228.2.1虚函数

6、(virtualfunction)必须通过对象指针调用虚函数,才能实现动态绑定.C++与面向对象程序设计238.2.1虚函数(virtualfunction)也可以通过对象引用调用虚函数,来实现动态绑定.C++与面向对象程序设计248.2.1虚函数(virtualfunction)如果通过对象调用虚函数,是不能实现动态绑定的.C++与面向对象程序设计258.2.2应用示例典型应用:P323:例8.2Person类及其派生类P324:例8.3计算器类Calculator及其派生类C++与面向对象程序

7、设计268.2.2应用示例非典型应用:P326:例8.4仅需理解P327:例8.5仅需理解C++与面向对象程序设计278.2.3虚函数表动态绑定的实现机制复杂的三级指针C++与面向对象程序设计288.2.3虚函数表虚函数对对象的影响P329:例8.6C++与面向对象程序设计298.2.4虚析构函数构造函数不能为虚函数析构函数应为虚函数.P331:例8.8C++与面向对象程序设计308.2.4动态关联的三个特点基类中定义有虚函数;从基类继承并重定义该虚函数;对象指针或者引用访问;C++与面向对象程序

8、设计318.2.4总结几个关键字可修饰函数者inlinestaticexternfriendvirtualC++与面向对象程序设计32第8章虚函数与多态性8.4纯虚函数和抽象类C++与面向对象程序设计33需要纯虚函数(purevirtualfunction)的原因:某些类太抽象,实现函数没有意义纯虚函数的语法virtual成员函数原型=0;纯虚函数与虚函数的区别(pure)8.4.1纯虚函数C++与面向对象程序设计348.4.2抽象类/抽象基类定义:具有纯虚函数的类作用:为子类提供

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

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

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