当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《面向对象程序设计》第六章 多态性与虚函数(6.3)纯虚函数与同一协议的多版本

资源类别:文库,文档格式:DOC,文档页数:1,文件大小:34.5KB,团购合买
在大多数情况下,多态基类中的虚函数不被调用。有时,多态基类的通用性非常之高, 以至于它的实例对象几乎没有意义。这是因为通用性高的多态基类的功能是为了表达统一的 协议和接口,提供一套成员函数的核心集合和派生类将使用的变量,描述公共继承模式,便 于动态联编,为统一协议提供多种执行版本。
点击下载完整版文档(DOC)

6.3纯虚函数与同一协议的多版本 在大多数情况下,多态基类中的虚函数不被调用。有时,多态基类的通用性非常之高, 以至于它的实例对象几乎没有意义。这是因为通用性高的多态基类的功能是为了表达统一的 协议和接口,提供一套成员函数的核心集合和派生类将使用的变量,描述公共继承模式,便 于动态联编,为统一协议提供多种执行版本。为了防止抽象性高的类被实例化,可以在程序 中加入出错代码,当企图实例化时给出出错信息。更好的办法是让编译器来做这个工作。于 是,C++提供了纯虚函数( pure virtual function)的概念和实现 6.3.1纯虚函数的定义和性质 当设计的基类并不与实例对象直接联系起来时,类中定义函数并不作具体工作,而是为 派生类提供公共界面,那么可将其函数定义为纯虚函数。 纯虚函在基类中的原型说明形式如下: virtual type func name( parameter list=0 这个说明与一般虚函数相比的特殊之处是,设置函数等于0,它通知编译器该函数还没 有定义函数体。在该类的 VTABLE中,为该函数留了位置,但为空 C++提供的纯虚函数的性质是,在类说明中不需要提供实际操作定义,具有纯虚函数的 类也不能定义任何对象,它的任何派生类都应强制覆盖这个纯虚函数。 注意:构造函数和析构函数都不能是纯虚函数。 6.3.2抽象类的用法 如果一个类包含有纯虚函数,则称为抽象类( abstract base class) 由于抽象类中至少含有一个纯虚函数(没有真正的函数体)。因而在使用上,应明确下 列要点 (1)抽象类不能创建相应的对象,只能作为其他类的基类。 (2)抽象类不是完整数据类型,不能作函数返回类型、参数类型或显式转换类型 (3)可以建立指向抽象类的指针和引用,并通过基类(抽象类)指针指向派生类,实 现运行时的多态机制。 虽然纯虚函数不被多态调用,但是它可以有自己的定义,其目的是将公共的代码放在高 层次的类中,便于被尽量多的类继承,减少书写重复代码的工作量 例6.5]抽象类的用法EX65.CP。 6.3.3纯虚函数的应用例析 利用纯虚函数的多态性编程,通过一个构造存储对象实例来讨论。 [例6.6]纯虚函数的应用例析EX66.CPP

6.3 纯虚函数与同一协议的多版本 在大多数情况下,多态基类中的虚函数不被调用。有时,多态基类的通用性非常之高, 以至于它的实例对象几乎没有意义。这是因为通用性高的多态基类的功能是为了表达统一的 协议和接口,提供一套成员函数的核心集合和派生类将使用的变量,描述公共继承模式,便 于动态联编,为统一协议提供多种执行版本。为了防止抽象性高的类被实例化,可以在程序 中加入出错代码,当企图实例化时给出出错信息。更好的办法是让编译器来做这个工作。于 是,C++提供了纯虚函数(pure virtual function)的概念和实现。 6.3.1 纯虚函数的定义和性质 当设计的基类并不与实例对象直接联系起来时,类中定义函数并不作具体工作,而是为 派生类提供公共界面,那么可将其函数定义为纯虚函数。 纯虚函在基类中的原型说明形式如下: virtual type func_name(parameter_list)=0; 这个说明与一般虚函数相比的特殊之处是,设置函数等于 0,它通知编译器该函数还没 有定义函数体。在该类的 VTABLE 中,为该函数留了位置,但为空。 C++提供的纯虚函数的性质是,在类说明中不需要提供实际操作定义,具有纯虚函数的 类也不能定义任何对象,它的任何派生类都应强制覆盖这个纯虚函数。 注意:构造函数和析构函数都不能是纯虚函数。 6.3.2 抽象类的用法 如果一个类包含有纯虚函数,则称为抽象类(abstract base class)。 由于抽象类中至少含有一个纯虚函数(没有真正的函数体)。因而在使用上,应明确下 列要点: (1)抽象类不能创建相应的对象,只能作为其他类的基类。 (2)抽象类不是完整数据类型,不能作函数返回类型、参数类型或显式转换类型。 (3)可以建立指向抽象类的指针和引用,并通过基类(抽象类)指针指向派生类,实 现运行时的多态机制。 虽然纯虚函数不被多态调用,但是它可以有自己的定义,其目的是将公共的代码放在高 层次的类中,便于被尽量多的类继承,减少书写重复代码的工作量。 [例 6.5] 抽象类的用法 EX6_5.CPP。 6.3.3 纯虚函数的应用例析 利用纯虚函数的多态性编程,通过一个构造存储对象实例来讨论。 [例 6.6] 纯虚函数的应用例析 EX6_6.CPP

点击下载完整版文档(DOC)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
已到末页,全文结束
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有