面向对象程序设计C++第8章 多态性和虚函数.pptVIP

面向对象程序设计C++第8章 多态性和虚函数.ppt

  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文档。上传文档
查看更多
8.5 运算符重载 运算符重载时必须遵守如下原则: 1. 重载的运算符是C++已经存在的运算符,不能主观臆造。 2.运算符重载不能改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符重载只能重载为双目运算符。 3.运算符重载不能改变C++语言中已定义的运算符优先顺序和结合性。 4.运算符重载一般不改变运算符的功能。例如,重载的“+” 运算符不可以用来计算两个对象的乘积。 5.不能重载的运算符有:(1) sizeof()运算符;(2) 成员运算符(.);(3) 指向成员的指针运算符(*);(4) 作用域运算符(::);(5) 条件运算符(?:); 6.编译程序对运算符重载遵循函数重载的选择规则。 8.5 运算符重载 8.5.2 运算符重载为成员函数 运算符重载为类的成员函数的一般形式为: 类型类名::operator运算符([形参表]) { 函数体; } 说明 (1) “类型”是作为函数的返回类型; (2) “类名”是重载该运算符的类; (3) “operator”是关键字,是重载运算符的标志; (4) “运算符”是要重载的运算符; (5) “形参表”表示该运算符所需要的操作数,双目运算符重载为类的成员函数,它们包含一个形参,即运算符右则的操作数。 8.5 运算符重载 1.双目运算符重载为类成员函数 双目运算符有两个操作数,通常在运算符的左右两侧,如a+b,ab等。在重载双目运算符函数中,一个操作数是对象本身的数据,由this指针给出,另一个操作数则需要通过运算符重载函数的参数表来传递。 2.单目运算符重载为类成员函数 单目运算符中有一个操作数,如!a,-b,c,++i等,重载单目运算符的方法与重载双目运算符的方法类似。但由于单目运算符只有一个操作数,因此运算符重载函数只有一个参数,且可以省略此参数。因为操作数由对象的this指针给出,就不需要任何参数。 面向对象程序设计 新世纪高职高专软件专业系列规划教材 C++ % 大连理工大学出版社 地址:大连市软件园路80号 发行:0411E-mail : dutp@ 第7章 继承与派生 第8章 多态和虚函数 第9章 模板和异常处理 第10章 文件的输入输出 第11章 Visual C++编程基础 第1章 绪论 第2章 数据类型和表达式 第3章 控制结构 第4章 复合数据类型 第5章 函数 第12章 MFC应用程序实例 第6章 类与对象 xxx xxxxx 目 录 页 xx 目 录 页 第8章 多态性和虚函数 大连理工大学出版社 地址:大连市软件园路80号 E-mail : dutp@ URL:http://www.dutp,cn * * * * * * * * * * * * * * * * 学习目标 了解静态联编和动态联编的概念 掌握虚函数的定义和调用方法 理解纯虚函数和抽象类的概念 8.1 联编的概念 多态性是通过联编来实现的。所谓联编,是把函数调用与适当的函数代码相关联的动作,分为静态联编和动态联编。静态联编在程序执行前完成,在编译阶段决定执行哪个同名函数被调用,这称为静态联编;而在编译阶段不能决定执行哪个同名函数被调用,只有在执行阶段才能依据要处理的对象类型来决定执行哪个类的成员函数,其所支持的多态性称运行时的多态性,称为动态联编。是通过继承和虚函数实现的 8.2 动态联编和虚函数 8.2.1 虚函数的定义 虚函数的定义格式如下: virtual 返回类型 函数名(参数列表) { 函数体 } 说明 (1) virtual关键字声明的函数称为虚函数。 (2) 如果某类的一个成员函数声明为虚函数,则意味着该成员函数在派生类中可能有不同的实现。在基类的派生类中就可以定义一个其函数名、参数、返回类型均相同的虚函数。 (3) 当通过指针或引用来调用该虚函数时,将会采用动态联编的方式。 8.2 动态联编和虚函数 8.2.2 虚函数的调用 通过对象指针或引用来调用虚函数时,调用到的虚函数由对象指针或对象引用所关联的实际对象所决定。因此,对象指针或引用关联到不同类的对象时,调用到的虚函数就不同,实现了动态多态性。 所以,利用虚函数来实现动态多态性,必须满足如下要求: (1) 在基类中把成员函数定义为虚函数; (2) 在派生类中定义与基类虚函数同名、同参数、同返回类型的成员函数,但函数体不同,以实现对不同对象的操作; (3) 在main()函数中,通过对象指针或引用来调用虚函数。 8.3 纯虚函数和抽象类 8.3.1 纯虚函数 纯虚函数是一种特殊的虚函数,它只有函数的声明,没有具体实现函数的功

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档