第6章 虚函数和多态性ppt课件.ppt

第6章 虚函数和多态性ppt课件.ppt

ID:58698977

大小:174.00 KB

页数:48页

时间:2020-10-04

第6章 虚函数和多态性ppt课件.ppt_第1页
第6章 虚函数和多态性ppt课件.ppt_第2页
第6章 虚函数和多态性ppt课件.ppt_第3页
第6章 虚函数和多态性ppt课件.ppt_第4页
第6章 虚函数和多态性ppt课件.ppt_第5页
资源描述:

《第6章 虚函数和多态性ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章虚函数和多态性6.1虚函数6.2抽象类6.3虚析构函数6.4多态所谓多态,是指不同对象对相同消息作出不同的响应。多态是通过继承、虚函数以及动态联编来实现的。6.1虚函数6.1.1虚函数的定义虚函数是实际上不存在,但确实影响程序某些部分的函数。虚函数有多态性,即派生的类有共同的函数,这些共同的函数有着相同的函数名称和相同的参数,但是却有各自不同的具体实现部分。虚函数的定义方法如下:virtual<函数返回类型><虚函数名称><(参数列表)>;定义虚函数要遵循下列规则:(1)类的静态成员函数不可以定义为虚函数。(2)类的构造函数不可以定义为虚函数。(3)非类的成员函数不可以定义为虚函

2、数。【例6.1】假设一个程序可用来绘制不同的形状,比如三角形、圆、矩形、椭圆等等,并假设这些类中每个类都有一个成员函数draw(),通过该函数可绘制对象。分析下列程序的输出结果。#include"iostream.h"classperson{public:voidprintInfo()//基类中的函数{cout<<"Person";}};classworker:publicperson{private:intkindofwork;public:voidprintInfo()//在派生类worker中重新定义{cout<<"Worker";}};classteacher:publ

3、icperson{private:intsubject;public:voidprintInfo()//在派生类teacher中重新定义{cout<<"Teacher";}};voidmain(){workerw;teachert;person*p;p=&w;//w是worker类对象p->printInfo();p=&t;p->printInfo();}程序的执行结果为:PersonPerson注意:虚函数应该在基类中声明,且不能在派生类中重新定义。如果使用派生类层次结构,必须在最高层上声明虚函数。虚函数必须定义在它第一次被声明的类中。在派生类中重新定义的虚函数必须和基类中的虚函

4、数有相同的参数个数和数据类型,否则,编译器将认为重载虚函数。6.1.2纯虚函数纯虚函数只有一个函数声明,并没有具体函数功能的实现。可通过给函数指定零值进行声明。纯虚函数的定义格式为:virtual<函数类型><虚函数名称>(<参数列表>)=0例如:virtualvoidgetdata()=0;不能创建含有一个或多个纯虚函数的类对象,因为如果将函数调用发送给纯虚方法是不会有任何回应的。纯虚函数不可以直接调用,也不可以被继承。【例6.2】分析程序执行结果。#include"iostream.h"classA{public:virtualvoidsize()=0;};classB:publi

5、cA{private:doublex;public:voidsize(){if(x>=0)cout<

6、能作为基类被子类继承,不能定义抽象类的对象,其纯虚函数的实现由子类给出。如果一个派生类继承了抽象类,但是并没有重新定义抽象类中的纯虚函数,则该派生类仍然是一个抽象类。只有当派生类中所继承的所有纯虚函数都被实现时,它才不是抽象类。【例6.3】抽象类举例。classShapes{public:virtualvoiddraw()=0;//纯虚函数virtualvoidrotate(int)=0;//纯虚函数};classcircle:publicShapes{private:doubleradius;public:circle(intr);voiddraw(){}voidrotate(int

7、){}doublearea(){return3.14159*radius*radius;}doublevolume(){return3*3.14159*radius*radius*radius/4;}};6.3虚析构函数在析构函数前面加上关键字virtual进行说明,称该析构函数为虚析构函数。【例6.4】分析程序执行结果。#include"iostream.h"classA{private:char*a_ptr;public:A()//构造函数

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

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

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