第6章 运算符重载学习 文档 参考.pptVIP

  1. 1、本文档共18页,可阅读全部内容。
  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++实用教程 章韵等 第六章 运算符重载 高等教育出版社 第 6 章 运算符重载 6.1 概述 6.4 类型转换 6.3 友元函数重载运算符 6.2 成员函数重载运算符 6.5 几个特殊运算符重载 6.1 概述 若要使某个运算符适用于自定义类型,必须在相应的类中对该运算符进行重载。 运算符重载的原理是:一个运算符只是一个具有特定意义的符号,只要告诉编译系统在什么情况下如何去完成特定的操作,而这种操作的本质是通过特定的函数来实现的。 不能被重载的运算符有: . :: ? : *(指针运算符) sizeof() 注意,重载运算符时,不能改变它们的优先级和结合性,也不能改变操作数的个数。 可以通过类的成员函数或者友元函数进行重载。但有些运算符只能用成员函数重载,比如赋值运算符、数组下标运算符”[ ]”、函数调用运算符”()”、new、delete等。 运算符重载的一般格式为: <类型> operator @(<参数表>) //成员函数重载 {……} // 函数体 或  friend <类型> operator @(<参数表>)//友元函数 {……} // 函数体 其中,@为要重载的运算符。 6.1 6.2 成员函数重载运算符 成员函数可以重载几乎所有能够重载的运算符,用成员函数重载运算符的特点是当前对象为运算符的一个操作数。 一、一元运算符重载 用成员函数实现一元运算符重载的一般格式为: <类型> operator <单目运算符>( ) { … } // 函数体 该重载运算符的操作数为该重载运算符所在的当前对象。 6.2 二、二元运算符重载 用成员函数重载二元运算符的格式为: <类型> operator <二元运算符>(<参数> ) { … } // 函数体 其中,<参数>只有一个,通常为运算符的右操作数。重载二目运算符的左操作数为当前对象。 6.2 6.3 友元函数重载运算符 用友元函数重载运算符时必须在参数中指定所有操作数,且这些参数中至少有一个为对应类的类型。 一、一元运算符重载 由于友元函数不能使用*this指针,因此用友元函数重载单目运算符时必须带有一个参数作为该运算符的操作数。重载类X的单目运算符的一般格式为: friend <类型> operator <单目运算符>(X &obj) { … } // 函数体 该运算符重载函数是类X的友元。 obj为该重载操作赋的操作数。对于要改变操作数的运算符(比如++、--等),参数必须是引用类型或指针类型。 6.3 二、二元运算符重载 用友元函数重载类X的二目运算符的一般格式: friend <类型> operator<二元运算符>(<参数1>,<参数2>) { … } // 函数体 该运算符重载函数为类X的友元函数。在两个参数中,必须至少有一个参数为X类型的实例。其中<参数1>为左操作数,而<参数2>为右操作数。 6.3 6.4 类型转换 类型转换是将一种类型的值映射为另一种类型的值,类型转换分隐式类型转换和强制类型转换两种。 类型转换函数是类的一个非静态成员函数,可以看成是运算符重载的一种特殊情况。 为类X定义类型转换函数的格式为: operator <类型>( ) { … } //函数体 这个转换函数定义了类X到<类型>之间的映射关系。 定义转换函数时应注意如下几点: (1) 转换函数是用户定义的成员函数,但它要是非静态的。 (2) 由于转换函数的函数名是类型转换的目标类型,因此,不必再为它指定返回值。另外转换函数是将本类型的数值或变量转换为其他的类型,因此也不必带参数。 (3) 转换函数也不能定义为友元函数,但转换函数可以被派生类所继承,也可将其声明为虚函数。 6.4 6.5 几个特殊运算符的重载 1、 “++”和“--”运算符重载 “++”和“--”运算符都是单目运算符,前面的重载方法为前置。下面介绍后置的重载。 ??重载后置运算符的一般格式为: <类型> operator ++(int) { … } // 函数体 或 friend <类型> operator ++(X &, int) { … } // 函数体 其中的整型参数没有特别的意义,只是标识重载的是后置运算符。 2、 赋值运算符重载 系统为每一个类都生成了一个缺省的赋值运算符,在相同类型的实例之间可以直接相互赋值,甚至派生类的实例可以赋给基类

文档评论(0)

文人教参 + 关注
实名认证
文档贡献者

老师教学,学生学习备考课程、成人语言培训课程及教材等为提升学生终身学习竞争力,塑造学生综合能力素质,赋能学生而努力

版权声明书
用户编号:6103150140000005

1亿VIP精品文档

相关文档