多态性与虚函数1

多态性与虚函数1

ID:39319690

大小:949.00 KB

页数:24页

时间:2019-06-30

多态性与虚函数1_第1页
多态性与虚函数1_第2页
多态性与虚函数1_第3页
多态性与虚函数1_第4页
多态性与虚函数1_第5页
资源描述:

《多态性与虚函数1》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章多态性与虚函数多态性的概念虚函数纯虚函数与抽象类数学科学学院:汪小平wxiaoping325@163.com一、多态性的概念观察下图,识别其中所使用的元素。一、多态性的概念classNode{public:voidDraw(Graphics&graph);//画布类voidOffset(SizeF&size);.......................................................protected:....................................................

2、....};classStaff{public:voidDraw(Graphics&graph);voidOffset(SizeF&size);.......................................................protected:........................................................};一、多态性的概念classShape{public:voidDraw(Graphics&graph);//graph是传递过去的画布voidOffset(SizeF&s

3、ize);.......................................................protected:........................................................};classNode:publicShape{........................................................};classStaff:publicShape{................................................

4、........};修改后的类结构(具有抽象类)。一、多态性的概念考虑这些图形元素的存储方式。Shapem_graph[N];一、多态性的概念Shape*m_graph[N];………………………for(inti=0;iDraw(graph);考虑下面这段程序,它的输出结果可能会是怎样的?怎么区分指针存储的是哪一类对象地址?Shape*m_graph[N];………………………for(inti=0;iDraw(graph);else((Staff*

5、)m_graph[i])->Draw(graph);}一、多态性的概念这种编程方式不简洁,程序可读性不强,可以使用C++提供的虚函数,这样使得代码非常简单。classShape{public:virtualvoidDraw(Graphics&graph);virtualvoidOffset(SizeF&size);.......................................................protected:........................................................

6、};classNode:publicShape{..............//重新实现Draw和Offset函数};classStaff:publicShape{..............//重新实现Draw和Offset函数};一、多态性的概念Shape*m_graph[N];………………………for(inti=0;iDraw(graph);程序在运行时自动识别指针所指向的对象类型,从而调用该对象重写的虚函数,实现运行时的多态性。多态性分两种:静态多态性和动态多态性。程序在编译时就能确定应该调用哪个函数,称为

7、静态(或编译时的)多态性,比如:函数重载和运算符重载;程序在运行过程中才能动态地确定操作所针对的对象,称为动态多态性。这时通过虚函数实现。二、虚函数虚函数是动态绑定的基础。虚函数是非静态的成员函数,静态成员函数、内置成员函数和构造函数都不能说明为虚函数。声明方式:在函数原型之前写virtual,但函数实现时不能再写。具有继承性,基类中声明了虚函数,派生类中无论是否说明,同原型函数都自动为虚函数。虚函数本质:不是重载、屏蔽,而是覆盖。调用方式:通过基类指针或引用,执行时会 根据指针指向的对象的类类型,决定调用哪个函数。二、虚函数#include

8、ream>usingnamespacestd;classB0//基类B0声明{public:/

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

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

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