- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
纯虚函数 纯虚函数:定义一个基类时,若无法给出某虚函数的具体实现,而该虚函数的实现完全依赖于不同的派生类,则在基类中将该虚函数声明为纯虚函数。 纯虚函数的声明: class 抽象类 { … virtual 返回值类型 成员函数名 ( 形参表 )= 0 ; }; ①因为无法给出纯虚函数的具体实现,所以没有函数体,但不是函数体为空!函数体为空的函数称为空函数,调用空函数时,不执行任何操作。 ②将函数名赋值为0,本质上是将指向函数体的指针赋值为0。在派生类中没有重新定义纯虚函数之前,是不能调用这种函数的! 抽象类━━只能作为基类使用,不能定义对象!但可定义抽象类的指针! 抽象类━━包含有纯虚函数的类 当一个类中包含纯虚函数时,称其为抽象类。由于纯虚函数没有实现部分,所以抽象类不能定义对象。抽象类的唯一作用就是为派生类提供基类,而纯虚函数的作用则是为派生类中的成员函数提供基础!方法是:定义一个抽象类的指针,使其指向不同派生类的对象,而这些派生类中重新定义了纯虚函数,从而实现动态多态性。 抽象类━━构造函数或析构函数的访问属性为 protected 的类 当一个类的构造函数或析构函数的访问属性为保护型时,也称其为抽象类。由于构造函数或析构函数为保护型时,类外不能自动调用,所以不能定义对象。 但这种抽象类可以作为基类来派生子类!原因是:在派生类中允许调用基类的保护成员。当创建派生类对象时,在派生类的构造函数中可以调用基类的保护型构造函数;当撤消派生类对象时,在析构函数中也可以调用基类的保护型析构函数。 综合实例 【例】(有各种平面图形若干,例如:圆形、三角形、矩形,试通过定义纯虚函数的方法,求各平面图形的周长和面积。 ) 分析: ①定义一个描述抽象平面图形的类 Shape,成员函数有:求周长的函数 distance( ) 、求面积的函数 area( ) 。对于抽象平面图形而言,求周长、求面积的公式均无法给出, 所以 distance( ) 、area( ) 函数就没有函数体,是纯虚函数, Shape 类是抽象类!抽象类的唯一用途就是为派生类提供基类,纯虚函数的作用是为派生类中的成员函数提供基础,目的是实现动态多态性。 ②圆形类 Circle、三角形类 Triangle、矩形类 Rectangle 均可由抽象类 Shape 派生而来,并在各自的类中对纯虚函数 distance( )、area( ) 进行重新定义。 ③通过基类 Shape 的指针,调用各派生类对象的求周长函数 distance( ) 、求面积函数 area( ),利用动态联编的方法获得派生类对象的具体函数。 一、定义一个描述抽象平面图形的类 Shape ,要求: Shape 类的成员函数: ① virtual float distance( ) = 0 ; //求抽象平面图形的周长,为纯虚函数 ② virtual float area( ) = 0 ; //求抽象平面图形的面积,为纯虚函数 二、由抽象类 Shape 派生出一个描述圆形的类 Circle,要求: Circle 类的成员数据: float radius ; //存放圆半径 Circle 类的成员函数、友元函数: ① Circle ( float r=0 ) ; //构造函数 ② float distance ( ) ; //求圆周长 ③ float area ( ) ; //求圆面积 ④ friend istream operator ( istream in , Circle c ) ; //重载 ⑤ friend ostream operator ( ostream out , Circle c ) ; //重载 三、由抽象类 Shape 派生出一个描述三角形的类 Triangle ,要求: Triangle 类的成员数据: float a , b , c ; //存放三角形的三条边 Triangle 类的成员函数、友元函数: ① Triangle ( float x=0 , float y=0 , float z=0 ) ; //构造函数 ② fl
您可能关注的文档
最近下载
- 《戏剧影视表演剧目创作》课件——2.任务2 梳理中心事件与矛盾冲突.pptx VIP
- 18G901-1混凝土结构施工钢筋排布规则与构造详图(现浇混凝土框架、剪力墙、梁、板)公开版.docx VIP
- 化妆品店长毕节大方岗位职责.docx VIP
- (正式版)DB35∕T 2250-2025 《免陪照护病区服务规范》.pdf VIP
- 【教学课件】微专题课件:把握戏剧冲突.pptx
- 高级园林绿化工试题库(含答案).pdf VIP
- 微电影创作教程全套教学课件.pptx VIP
- 高二【物理(人教版)】实验:练习使用多用电表-教学设计.docx VIP
- 2025年执业药师考试《中药学专业知识(一)》真题及答案解析【完整版20259.pdf VIP
- 2009年十一月号 - 沙田培英中学.pdf VIP
文档评论(0)