C++面向对象程序设计栗青生 第6章新.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章导读 所谓多态性是指发出的消息被不同的对象接受时会产生完全不同的行为。多态性是面向对象程序设计的重要特性之一,多态性机制不仅增加了面向对象软件系统的灵活性,而且显著提高了软件的可重用性和可扩充性。在C++中,C++中的多态性可以分为四类:参数多态、包含多态、重载多态和强制多态。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。 本章要点 理解静态联编机制和动态联编机制 虚函数的使用 运算符重载函数的规则及其两种形式 单目运算符重载和双目运算符重载 第六章 目录 6.1 多态性 6.2 虚函数 6.3 纯虚函数和抽象类 6.4 运算符重载 6.5 运算符重载函数的形式 6.6 程序举例 6.7 本章小结 习题六 6.1 多态性 6.1.1通用多态和专用多态 6.1.2多态的实现 6.1.1通用多态和专用多态 C++中的多态性可以分为四类:参数多态、包含多态、重载多态和强制多态。前面两种统称为通用多态,而后面两种统称为专用多态。 参数多态与类属函数和类属类相关联,本书中讲到的函数摸板和类摸板就属于这种类型。由类摸板实例化的各个类都有相同的操作,而操作对象的类型却可以各不相同。同样地,由函数摸板实例化的各个参数也都具有相同的操作,但这些函数的参数类型也是可以各不相同的。 包含多态是研究类族中定义于不同类中的同名成员函数的多态行为,主要是通过本章中要讲的虚函数来实现的。 重载多态如函数重载、运算符重载等。前面我们讲的普通函数及类的成员函数的重载都属于这一类型。运算符重载我们会在以后的学习中学到。 强制多态是指将一个变元的类型加以变化,以符合一个函数或操作的要求。例如,加法运算符在进行浮点数与整型数相加时,要进行类型强制转换,要把整型数转换为浮点数之后再进行相加。 6.1.2多态的实现 C++语言支持两种多态性:编译时的多态和运行时的多态。多态的实现和联编这一概念有关。所谓联编就是把函数名与函数体的程序代码连接在一起的过程。联编又可分为静态联编和动态联编。系统用实参与形参进行匹配,对于同名的重载函数便根据参数上的差异进行区分,然后进行联编,从而实现多态。 1.静态联编 静态联编就是在编译阶段完成的联编。编译时的多态就是通过静态联编实现的。 2.动态联编 动态联编就是在程序运行阶段完成的联编。动态联编是运行阶段完成的联编。 运行时的多态就是用动态联编来完成的,当程序调用到某一函数名时,才去寻找和连接其程序代码。对面向对象程序而言,就是当对象接受到某一消息时,才去寻找和连接相应的方法。 静态联编要求在程序编译时就知道调用函数的全部信息,因此,这种联编类型的函数调用速度很快,效率很高,但缺乏灵活性;而动态联编则恰好相反,采用动态联编时,一直要到程序运行时才能确定调用哪个函数,它降低了程序的运行效率,但提高了程序的灵活性。纯粹的面向对象程序语言因为其执行机制是消息传递,所以只能采用动态联编的方式。这就给基于C语言的C++带来了麻烦。因为为了保持C语言的高效性,C++仍是编译型的,仍采用静态联编。 好在C++的设计者想出了“虚函数”机制,利用虚函数机制,C++可部分地采用动态联编。也就是说,C++实际上是采用了静态联编和动态联编相结合的联编方法。运行时的多态性主要是通过虚函数来实现的。 6.2 虚函数 6.2.1虚函数的作用和定义 6.2.2虚析构函数 6.2.3虚函数与重载函数的关系 6.2.4多继承与虚函数 虚函数允许函数调用与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,这也就是所谓的动态联编。 6.2.1虚函数的作用和定义 1.虚函数的作用 虚函数首先是基类中的成员函数,在这个成员函数前面缀上关键字virtual,并在派生类中被重载。虚函数与派生类的结合可使C++支持运行时的多态性,而多态性对面向对象的程序设计又是非常重要的,实现了在基类定义派生类所拥有的通用接口,而在派生类定义具体的实现方法,即通常所说的“同一接口,多种方法”,它能帮助程序员处理越来越复杂的程序。 2.虚函数的定义 虚函数的定义是在基类中进行的,它是在需要定义为虚函数的成员函数的声名中冠以关键字virtual,并要在派生类中重新定义。所以虚函数为它的派生类提供了一个公共的界面,而派生类对虚函数的重定义则指明函数的具体操作。在基类中的某个成员函数被声明为虚函数后,此虚函数就可以在一个或多个派生类中被重新定义。在派生类中重新定义时,其函数原型包括返回类型、函数名、参数个数、参数类型的顺序等都必须与基类中的原型完全相同。 虚函数定义的一般格式为: virtual 函数类型 函数名(形参表) { 函数体 } 如果在派生类中的函数满足以下三个条件则可以判断该函数是虚函

您可能关注的文档

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档