- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C14讲解
第14章 虚函数和抽象类 本章内容 14.1 什么是虚函数 14.2 抽象类与纯虚函数 14.3 多重继承时抽象类的应用 14.4 虚函数表 14.1什么是虚函数 C++通过虚函数实现多态.无论发送消息的对象属于什么类,它们均发送具有同一形式的消息,对消息的处理方式可能随接手消息的对象而变的处理方式被称为多态性。在某个基类上建立起来的类的层次构造中,可以对任何一个派生类的对象中的同名过程进行调用,而被调用的过程提供的处理可以随其所属的类而变。 14.1什么是虚函数 静态绑定是指绑定的是对象的静态类型,某特性(比如函数)依赖于对象的静态类型,发生在编译期。动态绑定:绑定的是对象的动态类型,某特性(比如函数)依赖于对象的动态类型,发生在运行期。 14.2 抽象类与纯虚函数 在C++中,在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。带有纯虚函数的类称为抽象类。下面,详细介绍下纯虚函数和抽象类。 class 类名 { virtual 类型函数名(参数表)=0; }; 14.2 抽象类与纯虚函数 抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承层次结构的较上层。抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。 14.3多重继承时抽象类的应用 在多重继承中,以抽象类作为基类,不实现抽象类中的方法。比较在上例中,先定义汽车和船的抽象类,在定义汽陆两用船时机可以多重继承,然后具体实现各个抽象类的方法。 14.4 虚函数表 虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。 14.5 抽象类应用 定义一个抽象类shape,包含一个成员为s,代表该图像的面积。再写出该类的构造函数,将s设置为0,定义一个纯虚函数Area,代表该图像的面积。定义一个矩形的派生类,在该派生类中定义两个成员,长和宽。随后,实现计算area的功能。定义一个圆形的派生类,在该派生类中定义一个个成员,半径。随后,实现计算area的功能。定义一个梯形的派生类,在该派生类中定义上底、下底和高。随后,实现计算area的功能。
文档评论(0)