网站大量收购独家精品文档,联系QQ:2885784924

面向对象编程技术与方法第5章运算符重载.pptxVIP

面向对象编程技术与方法第5章运算符重载.pptx

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象编程技术与方法(C++)第5章 运算符重载第5章 运算符重载第5章 运算符重载 5.1 运算符重载的概念 5.2 运算符重载的规则 5.3 运算符重载的两种形式 5.3.1 重载为类的成员函数 5.3.2 重载为类的友元函数 5.3.3 两种重载方式讨论 5.4 特殊运算符重载举例 5.4.1 类型转换运算符 5.4.2 复合赋值运算符 5.4.3 自增和自减运算符 5.4.4 流提取运算符和流插入运算符 5.5 函数对象 5.6 小结 第5章 运算符重载5.1 运算符重载的概念 5.2 运算符重载的规则 5.3 运算符重载的两种形式 5.4 特殊运算符重载举例 5.5 函数对象 5.6 小结 第5章 运算符重载5.1 运算符重载的概念运算符重载也就是函数重载。运算符函数重载的声明格式: 返回类型 operator 运算符 ( 形参列表 );C++预定义的运算符只能操作基本数据类型的对象,例如对于int型对象a和b,求和可以直接写为 a+b。但是对于类对象,不能直接使用类似的表达方式。例如,对于两个CPoint类型的对象obj1和obj2,我们仍然希望能够像基本数据类型那样将表达式写为:obj1+obj2。解决方法就是在定义类CPoint时,重载运算符函数operator+()。第5章 运算符重载5.1 运算符重载的概念 5.2 运算符重载的规则 5.3 运算符重载的两种形式 5.4 特殊运算符重载举例 5.5 函数对象 5.6 小结 第5章 运算符重载5.2 运算符重载的规则大多数C++运算符都可以重载。下面几个不能重载:成员访问运算符(.)、成员指针访问运算符(.*)、作用域运算符(::)、求字节数运算符(sizeof)、类型识别(typeid)、条件运算符(?:)C++不允许用户定义新的运算符,只可以对已有的运算符进行重载。重载不会改变运算符操作对象的个数。重载后运算符的优先级以及结合性不变。运算符重载函数与一般函数的区别是:前者的参数个数只能是一个或者两个,而一般函数参数的个数没有限制。运算符重载函数的形参不能带默认值。虽然重载允许改变函数的功能,但应当使运算符重载后的功能与重载前的功能类似。一般来说,操作数包含有类对象的运算符都应该重载。但取地址运算符“”可以直接使用,不用自己重载;赋值运算符“=”有时不用重载,因为系统可以提供一个默认的赋值函数,特殊情况下则需要用户重新定义。第5章 运算符重载5.1 运算符重载的概念 5.2 运算符重载的规则 5.3 运算符重载的两种形式5.4 特殊运算符重载举例 5.5 函数对象 5.6 小结 第5章 运算符重载5.3 运算符重载的两种形式5.3.1 重载为类的成员函数在下面的例子中,定义一个复数类Complex。以一元运算符取负(-)和二元运算符减(-)为例,说明将一元运算符和二元运算符重载为成员函数的方法。由于类的非静态成员函数都隐含一个this参数,当调用对象的成员函数时this被自动初始化指向当前的对象。因此表面上看,一元运算符成员函数不带参数,二元运算符成员函数带一个参数,该参数是右操作数(运算符右侧的操作数),左操作数由this提供。第5章 运算符重载5.3.2 重载为类的友元函数将上例改为重载为友元的形式。由于友元函数不是类的成员函数,因此没有this指针。这时,一元运算符友元函数应带一个参数,二元运算符友元函数应带两个参数。第5章 运算符重载5.3.3 两种重载方式讨论运算符的两种重载形式都可以实现要求的功能,但是成员函数和友元函数是不同的。从表面上看,友元函数比成员函数多一个形参。实际上,成员函数所在的对象就是第1个操作数。一般而言,应将一元运算符重载为成员函数,将二元运算符重载为友元函数。“()”、“[]”、“-”、“-*”及“=”必须重载为成员函数。如果运算符的第一个操作数为当前的类类型,则可以重载为成员函数;如果运算符有一个操作数不是当前的类类型,则应重载为友元函数。例如,要计算(7.53-c1)的值,其中c1是Complex类对象。成员函数重载时,该表达式被解释为:7.53.operator - (c1);友元函数重载时,该表达式被解释为:operator - (Complex(7.53), c1)第5章 运算符重载第5章 运算符重载5.1 运算符重载的概念 5.2 运算符重载的规则 5.3 运算符重载的两种形式 5.4 特殊运算符重载举例 5.5 函数对象 5.6 小结 第5章 运算符重载5.4 特殊运算符重载举例5.4.1 类型转换运算符5.4.2 复合赋值运算符5.4.3 自增和自减运算符5.4.4 流提取运算符和流插入运算符

文档评论(0)

139****1983 + 关注
实名认证
文档贡献者

副教授、一级建造师持证人

一线教师。

领域认证该用户于2023年06月21日上传了副教授、一级建造师

1亿VIP精品文档

相关文档