1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++语言程序设计教程 第9章 多态性 9.4 抽象类 抽象类是一种特殊的类,是为了抽象的目的而建立的,建立抽象类,就是为了通过它多态地使用其中的成员函数,为一个类族提供统一的操作界面。抽象类处于类层次的上层,一个抽象类自身无法实例化,也就是说我们无法声明一个抽象类的对象,而只能通过继承机制,生成抽象类的非抽象派生类,然后再实例化。 9.4.1 纯虚函数 纯虚函数(pure virtual function)是一个在基类中说明的虚函数,它在该基类中没有定义具体实现,要求各派生类根据实际需要定义函数实现。纯虚函数的作用是为派生类提供一个一致的接口。 纯虚函数定义的形式为: virtual 函数类型 函数名(参数表)=0; 实际上,它与一般虚函数成员的原型在书写格式上的不同就在于后面加了=0。 C++中,有一种函数体为空的空虚函数,它与纯虚函数的区别为: ① 纯虚函数根本就没有函数体,而空虚函数的函数体为空。 ② 纯虚函数所在的类是抽象类,不能直接进行实例化,空虚函数所在的类是可以实例化的。 ③ 它们共同的特点是都可以派生出新的类,然后在新类中给出新的虚函数的实现,而且这种新的实现可以具有多态特征。 C++语言程序设计教程 第9章 多态性 9.4.2 抽象类与具体类 抽象类具有下述一些特点: (1) 抽象类只能作为其它类的基类使用,抽象类不能定义对象,纯虚函数的实现由派生类给出; (2) 派生类仍可不给出所有基类中纯虚函数的定义,继续作为抽象类;如果派生类给出所有纯虚函数的实现,派生类就不再是抽象类而是一个具体类,就可以定义对象。 (3) 抽象类不能用作参数类型、函数返回值或强制类型转换。 (4) 可以定义一个抽象类的指针和引用。通过抽象类的指针和引用,可以指向并访问各派生类成员,这种访问是具有多态特征的。 【例9-9】抽象类的使用 前面,在学习多重继承时,我们定义了点(Point)、圆(Circle)、圆柱体(Cylinder)三者的关系,点派生出圆、圆派生出圆柱体,但无论是点、圆、还是圆柱体,它们都具有一定外形,属于一种形状(Shape)。因此,我们可以对前面的示例加以丰富和修改,定义一个抽象类Shape,由抽象类Shape派生出类Point,类Point派生出类Circle,类Circle 进一步派生出类Cylinder,…等等,最终形成一个类族。 C++语言程序设计教程 第9章 多态性 【例9-9】抽象类的使用 2 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 41 42 // p9_9.cpp * class Shape //抽象类 { public: virtual double area()const=0; virtual void show()=0; }; class Point:public Shape { protected: int X,Y; public: Point(int X=0,int Y=0) { this-X=X,this-Y=Y; } void show() { cout(X,Y)endl; } double area() const //求面积 { return 0.0; } }; const double PI=3.14159; class Circle :public Point { protected: double radius; //半径 public: Circle( int X, int Y,double R):Point(X,Y) { radius=R; } double area() const //求面积 { return PI*radius*radius; } C++语言程序设计教程 第9章 多态性 【例9-9】抽象类的使用 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 61 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 void show

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档