(6.3)--6.11 纯虚函数和抽象类.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(6.3)--6.11 纯虚函数和抽象类.ppt》由会员分享,可在线阅读,更多相关《(6.3)--6.11 纯虚函数和抽象类.ppt(23页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、 纯虚函数和抽象类纯虚函数和抽象类在此输入您的封面副标题概述一般情况下,基类常用来表示抽象的概念,基类中的虚函数没有实际的意义,保留它的目的就是为了给所有的派生类提供一致的接口,这样的虚函数可以被所有派生类覆盖,我们把具有这一特殊性的虚函数称为纯虚函数,含有纯虚函数的类就是抽象类。纯虚函数纯虚函数是一种特殊的虚函数,它是被标明为不具体实现的虚函数,从语法上讲,纯虚函数是在虚函数的后面加上“=0”,表示该虚函数无函数体,这里的“=”并非赋值运算。声明纯虚函数的一般格式如下:virtual ()=0;class virtual ()=0;/是纯虚函数是纯虚函数 virtual void draw(
2、)virtual void draw()/是虚函数,不是纯虚函数是虚函数,不是纯虚函数是虚函数,不是纯虚函数是虚函数,不是纯虚函数判断下面两个虚函数是不是纯虚函数在一个类中如果虚函数不可能实现的太具体,则可以定义为纯虚函数。纯虚函数为类的继承提供了统一的接口。定义纯虚函数的目的我们知道纯虚函数是一个在基类中说明的虚函数,它在该基类中没有具体的操作内容,只是为其所有派生类提供一个一致的接口,要求派生类根据自己的实际需要提供该纯虚函数的定义,定义自己的版本。需要说明的是:如果某个类是从一个带有纯虚函数的类派生出来的,并且在该派生类中没有提供该纯虚函数的定义,则该纯虚函数在派生类中仍然是纯虚函数。纯
3、虚函数的作用纯虚函数的作用#include const double PI=3.14;using namespace std;class Shape /定义基类 public:virtual double area()const=0;/声明为纯虚函数;class Circle:public Shape /定义派生类,公有继承方式 public:Circle(double myr)R=myr;double area()const return PI*R*R;/对纯虚函数给出具体实现protected:double R;纯虚函数举例纯虚函数举例class Rectangle:public Shap
4、e /定义派生类,公有继承方式 public:Rectangle(double myl,double myw)L=myl;W=myw;double area()const return L*W;/对纯虚函数给出具体实现private:double L,W;void fun1(Shape&ref)/形参为基类的引用coutref.area()endl;/通过基类的引用调用虚函数void fun2(Shape*p)/形参为基类的指针coutarea()endl;/通过基类的引用调用虚函数纯虚函数举例纯虚函数举例double main()Circle c(3.0);/派生类Circle的对象 cou
5、tArea of Circle is;fun1(c);Rectangle rec(4.0,5.0);/派生类Rectangle的对象coutArea of Rectangle is;fun1(rec);coutArea of Circle is;fun2(&c);coutArea of Rectangle is;fun2(&rec);return 0;程序输出结果为:Area of Circle is 28.26Area of Rectangle is 20Area of Circle is 28.26Area of Rectangle is 20纯虚函数举例纯虚函数举例 注意:注意:在构造函
6、数和析构函数中不能调用纯虚函数。class Apublic:virtual void f()=0;void g()f();A()f();/Error!定义纯虚函数需要注意的问题定义纯虚函数需要注意的问题只有虚函数才可能是纯虚函数即非虚函数或普通函数都不能定义成纯虚函数。void f()=0void f()=0;/ErrorErrorclass Cclass C publc:publc:void open()=0;void open()=0;/ErrorError;定义纯虚函数需要注意的问题定义纯虚函数需要注意的问题抽象类抽象类在此输入您的封面副标题抽象类如果一个类中至少有一个纯虚函数,则这个类
7、为抽象类。因为抽象类要作为基类被其他类继承,所以通常也把它称为“抽象基类”。抽象基类不能用来建立实例化的对象。抽象类的唯一用途是为其他类提供合适的基类,其他类可以从它这里继承接口和(或)继承实现。注意:抽象类不能用来实例化对象但是可以声明抽象类的指针和引用。请看下面的代码:例如这样是错的class Apublic:virtual void f()=0;int main int main()()A a;/错误 A&a2,*p;/正确 关于抽象类需要注意的问题抽象类不能用来实例化对象,但是可以声明抽象类的指针和引用。抽象类派生出新的类之后,如果派生类给出所有纯虚函数的具体实现,在类外就可以声明该派
8、生类的对象,即不再是抽象类;反之,如果派生类没有给出全部纯虚函数的实现,这时的派生类仍然是一个抽象类,在类外不可以声明该派生类的对象。class ABC class ABC public:public:virtual void open()=0;virtual void open()=0;/类类类类ABCABC是是是是抽象抽象抽象抽象类类类类class X:public ABCclass X:public ABC public:public:virtual void open()virtual void open();/类类类类X X不是抽象类不是抽象类不是抽象类不是抽象类class Y:pu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 6.3-6.11 纯虚函数和抽象类 6.3 6.11 函数 抽象
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内