北大青鸟:《C++》PPT教学课件 第九章 多态

北大青鸟 c 第九章 多态 Ⅴ ersion3.0 CHA
Version 3.0 多态 第九章

回顾 继承 访问控制 继承中的构造函数和析构函数 函数覆盖 北大青鸟
2 回顾 • 继承 • 访问控制 • 继承中的构造函数和析构函数 • 函数覆盖

目标 虚函数 纯虚函数 抽象类 动态绑定 虚析构函数 北大青鸟
3 目标 • 虚函数 • 纯虚函数 • 抽象类 • 动态绑定 • 虚析构函数

虚函数 基类的指针可以指向派生类的对象 但调用的函数却是基类的函数 虚函数可以解决这个问题 北大青鸟
4 虚函数 • 基类的指针可以指向派生类的对象 • 但调用的函数却是基类的函数 • 虚函数可以解决这个问题

示例21 sinclude class shapes public: void draw o //基类中的函数 cout<"绘制基本形状\n"; class Circle public Shap private: int radius; public: void draw o //在派生类中重新定义 cout<<"绘制圆形\n"; 北大青鸟
5 示例 2-1 #include class Shapes { public: void draw() //基类中的函数 { cout << "绘制基本形状\n"; } }; class Circle : public Shapes { private: int radius; public: void draw() //在派生类中重新定义 { cout << "绘制圆形\n"; } };

示例22 class Square public Shapes private int length public: void draw o //在派生类中重新定义 coutdraw)i ptr &s ptr->drawoi 6 北大青鸟
6 示例 2-2 class Square : public Shapes { private: int length; public: void draw() //在派生类中重新定义 { cout draw(); ptr = &s; ptr->draw(); } 调用Shapes 的draw()方 法

虚函数的定义 希望使用raw)函数绘制不同对象 draw()函数必须在基类中被声明为虚函数 virtual void draw o //基类中的虚函数 cout<<"绘制基本形状\n 北大青鸟
7 虚函数的定义 • 希望使用draw( )函数绘制不同对象 • draw( )函数必须在基类中被声明为虚函数 virtual void draw() //基类中的虚函数 { cout << "绘制基本形状\n"; }

虚函数的覆盖 派生类替换基类提供的虚函数实现 编译器确保调用函数的正确版本 北大青鸟
8 虚函数的覆盖 • 派生类替换基类提供的虚函数实现 • 编译器确保调用函数的正确版本

演示 使用虚函数演示 前面的例子 轴2 北大青鸟
9 演示 使用虚函数演示 前面的例子

注意要点 virtua关键字 虚函数必须在声明它的类中有定义 在派生类中重新定义的虚函数必须具有相同 的参数 北大青鸟
10 注意要点 • virtual关键字 • 虚函数必须在声明它的类中有定义 • 在派生类中重新定义的虚函数必须具有相同 的参数
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北大青鸟:《C++》PPT教学课件 第八章 继承.ppt
- 北大青鸟:《C++》PPT教学课件 第七章 友员.ppt
- 北大青鸟:《C++》PPT教学课件 第六章 文件操作和异常.ppt
- 北大青鸟:《C++》PPT教学课件 第五章 流.ppt
- 北大青鸟:《C++》PPT教学课件 第四章 特殊的函数.ppt
- 北大青鸟:《C++》PPT教学课件 第三章 数据抽象.ppt
- 北大青鸟:《C++》PPT教学课件 第二章 高级函数特性.ppt
- 《C语言程序设计》课程教学资源:PPT教学课件 总复习.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第七章 模拟信号的数字传输(3/3).ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第七章 模拟信号的数字传输(2/3).ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第七章 模拟信号的数字传输(1/3).ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第五章 数字基带传输系统.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第四章 模拟调制系统(4.3)AM调制系统性能.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第四章 模拟调制系统(4.2)线性调制系统的抗噪声性能.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第四章 模拟调制系统(4.1)引言.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第三章 信道.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第二章 随机信号分析.ppt
- 长沙理工大学:《通信原理》课程教学资源(PPT课件)第一章 绪论(主讲:单树民).ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第九章 数据库安全性.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第八章 并发控制.ppt
- 北大青鸟:《C++》PPT教学课件 第十章 模板.ppt
- 北大青鸟:《C++》PPT教学课件 第一章 C++概述.ppt
- 重庆三峡职业学院:《商品网络防伪查询系统》讲义(毕业论文).doc
- 北京大学出版社:《C语言》PPT教学课件 第一章 C语言概述.ppt
- 北京大学出版社:《C语言》PPT教学课件 第二章 程序的灵魂一算法.ppt
- 北京大学出版社:《C语言》PPT教学课件 第三章 数据类型、运算符与表达式.ppt
- 北京大学出版社:《C语言》PPT教学课件 第四章 最简单的c程序设计.ppt
- 北京大学出版社:《C语言》PPT教学课件 第五章 选择结构程序设计.ppt
- 北京大学出版社:《C语言》PPT教学课件 第六章 循环控制.ppt
- 北京大学出版社:《C语言》PPT教学课件 第七章 数组.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第2章 数据库服务器的安装与卸载.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第3章 创建数据库.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第4章 Oracle企业管理器.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第5章 SQLPLUS.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第6章 物理存储结构.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第7章 逻辑存储结构.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第8章 数据库实例与操作模式.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第9章 数据库的启动与关闭.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第10章 模式对象.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第11章 安全管理.ppt