收藏 分享(赏)

林业大学第十二章多态类.ppt

上传人:gnk289057 文档编号:7011174 上传时间:2019-04-30 格式:PPT 页数:16 大小:87.50KB
下载 相关 举报
林业大学第十二章多态类.ppt_第1页
第1页 / 共16页
林业大学第十二章多态类.ppt_第2页
第2页 / 共16页
林业大学第十二章多态类.ppt_第3页
第3页 / 共16页
林业大学第十二章多态类.ppt_第4页
第4页 / 共16页
林业大学第十二章多态类.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、第12章 多态类,多态是面向对象程序设计的又一大特征。多态性是指发出同样的消息被不同类型的对象接收时产生完全不同的行为,简单的说就是“一个接口,多种算法”。,第12章 多态类,要点:虚函数的定义及使用方法纯虚函数及抽象类的基本概念 重点内容:虚函数的定义及使用方法,一、虚函数,1. 虚函数的定义格式在一个类中用关键字virtual说明的成员函数称为虚函数,其定义的格式如下: virtual 函数类型 函数名(形参表) 函数体 定义虚函数就是为了实现多态类。在基类中某个成员函数被声明为虚函数后,这个成员函数通常要在派生类中被重新定义,否则定义虚函数就没有意义。,一、虚函数,如果在基类中说明了的虚

2、函数,在它的派生类中与基类中虚函数说明相同的函数一定是虚函数,可以省略关键字virtual。但从程序的易读性出发,最好不要省略派生类中重定义虚函数时的virtual关键字。,一、虚函数,例12.1 虚函数的定义及使用。 #include class Country public:virtual void Display() /虚函数cout “世界上有很多国家。“ endl; ;,class China : public Country public:virtual void Display() cout “中国是我们伟大的祖国。“ endl; ; class America: public

3、Country public:virtual void Display() cout “美国和我们隔洋相对。“ endl; ;,void main() Country *pc,c; America am;China ch;pc = ,一、虚函数,2. 虚析构函数析构函数是在该类对象消亡之前进行一些必要的清理工作,对于动态绑定的虚函数必须用虚析构函数进行释放。,一、虚函数,例12.2 虚析构函数应用举例。 #include class A public:virtual void display()cout“display A“endl; ,virtual A()cout“Delete objec

4、t of A“endl; ; class B:public A public:virtual void display()cout“display B“endl; ,virtual B()coutdisplay();delete pb; ,二、纯虚函数和抽象类,1.纯虚函数纯虚函数是一种特殊的虚函数,它只有函数的声明,并没有具体实现函数的功能。它的一般格式如下: virtual = 0;,#include class Shape public:Shape(double dfx = 0.0, double dfy = 0.0);virtual void Draw() = 0; /纯虚函数prot

5、ected:double FirstX; /第一点x坐标double FirstY; /第一点y坐标 ; Shape:Shape(double dfx, double dfy) FirstX = dfx;FirstY = dfy; ,class Line : public Shape public:Line(double dfx = 0.0, double dfy = 0.0, double dsx = 0.0, double dsy = 0.0) ;void Draw(); protected:double SecondX; /第二点x坐标double SecondY; /第二点y坐标 ;,

6、Line:Line(double dfx, double dfy, double dsx, double dsy) : Shape(dfx,dfy) SecondX = dsx;SecondY = dsy; ,void Line:Draw() cout “绘制一条直线,第一点坐标为:(“ FirstX “,“ FirstY “) ,第二点坐标为:(“ SecondX “,“ SecondY “)“ endl; class Circle : public Shape public:Circle(double dfx = 0.0, double dfy = 0.0, double dr = 0.0) ;void Draw(); protected:double Radius; /圆的半径 ;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报