重载运算符.pptVIP

  1. 1、本文档共45页,可阅读全部内容。
  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文档。上传文档
查看更多
重载运算符

课件制作 第4章 运算符重载 主要内容 运算符重载的概念(13.1-13.2) 运算符重载的方法(13.3) 重载双目运算符(13.4) 重载单目运算符(13.5-13.8) 不同类型数据间的转换(13.9) 重载赋值运算符(13.11) 小结与作业 4.1 运算符重载的概念 有理数类 CRational 有理数定义:由一个分子和分母组成的a/b形式的数,其中 a是分子,b为分母,如 1/3, 3/4, 10/4; 一个有理数不能以0为分母,但可以以0为分子; 每个整数a 都等价于 a/1; 有理数用于包含分数的精确运算; 有理数支持的运算有加、减、乘、除、比较; 一个有理数可以转化为一个整数、浮点数或字符串; 4.1 运算符重载的概念 4.1 运算符重载的概念 4.1 运算符重载的概念 4.1 运算符重载的概念 4.1 运算符重载的概念 4.1 运算符重载的概念 重载,就是重新赋予新的含义 运算符重载的实质:对已有的运算符赋予多重含义 运算符重载的必要性: C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类) 运算符重载的实现机制:将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参 编译系统对重载运算符的选择,遵循函数重载的选择原则 4.2 运算符重载的方法 运算符重载的方法:在类中定义一种特殊的称为运算符函数的函数,在需要时,系统就自动调用该函数,以实现相应的运算 重载运算符的函数一般格式如下: 在定义了运算符函数后,可以说函数 operator+ 重载了运算符+ 4.2 运算符重载的方法 4.2 运算符重载的方法 4.2 运算符重载的方法 重载为类成员函数 C++预定义运算符其运算对象中至少有一个是程序员自定义类型时,需要重载运算符为该类的成员函数 重载为类成员函数时, 参数个数 = 原操作数个数 - 1(后置++、--除外) 成员函数用 this 指针隐式的访问了类的一个对象,它充当了运算符函数左边的操作数 重载为友元函数 如果需要重载一个运算符,使之能够用于操作某类对象的私有成员,可以将此运算符重载为该类的友元函数 重载为友元函数时,参数个数 = 原操作数个数,且至少应该有一个自定义类型的形参 4.2 运算符重载的方法 4.2 运算符重载的方法 4.2 运算符重载的方法 4.2 运算符重载的方法 C++不允许程序员创建新的运算符,只能对已有的C++运算符进行重载 (P321) 对于C++已有运算符,以下运算符不允许重载(5个): 成员访问运算符 . 指针取内容运算符 * 作用域运算符 :: 条件运算符 ? : sizeof 重载不能改变运算符运算对象(即操作数)的个数 重载不能改变运算符的优先级和结合性 重载运算符函数不能有默认参数 应当使重载运算符的功能类似于该运算符作用于标准类型数据时所实现的功能 4.2 运算符重载的方法 说明 在表达式中,如果两个操作数中其中有一个不是类对象,则重载的双目运算符(如“+”) 左侧应为类的对象 如果运算符左侧的操作数属于C++标准类型,则运算符函数不能作为类的成员函数,必须声明为友元函数 C++规定:赋值运算符(=)、下标运算符([])、函数调用运算符( () ) 只能重载为类的成员函数;流插入运算符“” 、流提取运算符“”、类型转换运算符(sizeof)只能重载为类的友员函数 考虑到各方面的因素,一般将单目运算符重载为成员函数,将双目运算符重载为友元函数 由于友元的使用会破坏类的封装,从原则上说,要尽量将运算符函数作为成员函数 4.2 运算符重载的方法 使用运算符重载能使用户程序易于编写、阅读和维护 通过运算符重载,扩大了C++已有运算符的作用范围,使之能用于类对象。 运算符重载使C++具有更强大的功能、更好的可扩充性和适应性,这是C++最吸引人的特点之一 4.3 重载双目运算符 双目运算符(或称二元运算符)是C++中最常用的运算符。双目运算符有两个操作数,通常在运算符的左右两侧 在重载双目运算符时,在函数中应该有两个参数 4.3 重载双目运算符 4.3 重载双目运算符 4.4 重载单目运算符 单目运算符只有一个操作数,如 !a,-b,c,还有最常用的++i 和 –i 等 重载单目运算符时,由于单目运算符只有一个操作数,运算符重载函数只有一个参数;如果运算符重载函数作为成员函数,则还可省略此参数 运算符“-” 的重载 一元运算符作用于一个运算对象—调用对象本身 一元运算符没有参数 4.4 重载单目运算符 4.4 重载单目运算符 4.4 重载单目运算符 ++和-- 运算符的重载 虽然++a 和 a++ 运算后对象a的值一致,但先自加或后自加的重载运算符函数的返回值不一致,必须在重载时予以区分

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档