C++(谭浩强)笔记(第10节).pdfVIP

  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文档。上传文档
查看更多
运算符重载 一、运算符重载介绍 1、函数重载 C++允许同一函数名同时定义多个函数,而这些函数的参数个数和参数类型 可以不相同,这就是函数重载。对于同名函数,我们要求参数类型至少有一个不 同,或者参数个数不同;仅仅是返回值不同的同名函数不满足函数重载要求。函 数重载具体实例如图1: 图1:函数重载方法 2、运算符重载 所谓重载,就是重新赋予新的含义,使之实现新的功能,即一名多用。因此, 同一个函数名可以用来代表不同功能的函数;同一个运算符可以用来代表不同功 能的运算。实际上,我们已经在不知不觉中使用了运算符重载,例如3+5,3.3+6.2 等,计算机处理int、double 类型的加法是不同的,由于C++ 已经对“+”重载, 所以适用不同类型的运算。包括“”“”这两个移位运算符也被重载了输入 输出功能。关于复数的运算,C++没有重载,可以自己尝试。 例1:设计程序实现复数的加法运算,如图1 所示: 图1:设计程序实现复数的加法运算 二、运算符的重载方法 运算符的重载方法是定义一个重载运算符的函数使指定的运算符不仅能实 现原有的功能而且可以实现在函数中指定的新功能。所以运算符重载的实质是函 数的重载。重载运算符的函数一般格式如下: 函数类型 operator 运算符名称(形参列表){对运算符的重载处理} 例如,对复数加法的运算可以使用运算符重载如图2 所示: 图2:将“+”重载,实现复数加法 三、重载运算符的规则 (1)C++不允许用户定义新的运算符,只能对已有的 C++运算符进行重载; (2)C++允许大多数运算符被重载,不允许被重载的运算符只有 5 个,分别 为:.(成员访问运算符)、*(成员指针访问运算符)、::(域运算符)、sizeof(长 度运算符)和?:(条件运算符);(3)重载不能改变运算符运算对象的个数,即双 目运算符只能重载为双目运算符;(4)不能改变运算符的优先级,例如“+”“-” “*”“/”无论怎么重载,优先级不会变;(5)重载不能改变运算符的结合性; (6)重载运算符函数不能有默认的参数;(7)重载的运算符必须和用户自定义 类型的对象一起使用,即重载函数的参数至少应有一个是自定义类型的对象; 四、运算符重载函数作为类的成员函数或者友元函数 对运算符重载的函数有两种处理方式:(1)把运算符重载的函数作为类的成 员函数;(2)运算符重载的函数不是类的成员函数,而是一个普通函数,在类中 将其声明为友元函数;图2 中就是将运算符重载的的函数作为了类的成员函数。 将运算符重载的函数声明为类的友元函数如图3 所示。 图2:将运算符重载的函数声明为类的友元函数 五、重载双目运算符 (、、==) 定义一个字符串类 String,用来存放不定长的字符串,重载运算符“==”、 “”、“”,用于两个字符串的等于大于和小于比较,具体程序如图4 所示。 图4:重载双目运算符 六、重载单目运算符(++、--) 有一个Time 类,包含数据成员minute 和second,模拟秒表,每次走一秒, 满60 秒进 1 分钟,此时秒又从0 算起。最后输出分和秒的值。具体程序如图5 所示: 图5:重载单目运算符 七、重载流插入运算符“”和流提取运算符“” C++的流插入运算符“”和流提取运算符“”是 C++编译系统在类库中 提供的。cin 和cout 分别是istream 类和ostream 类的对象。C++编译系统已经 对“”和“”进行了重载使之能用于输出和出入C++标准类型的数据。但是, 对于用户自定义类型的数据是不能直接用“”和“”输出和出入的,如果想 用它们输出和输入自定义类型的数据,必须对他们进行重载。对“”和“” 重载的函数形式如下: istream operator(istream ,自定义类); ostream operator(ostream , 自定义类); 注意:只能将重载“”和“”的函数作为友元函数,而不能将它们定 义为成员函数。 1、重载流插入运算符“” 在程序中,人们希望能用流插入运算符“”来输出用户自己声明的类的对

文档评论(0)

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

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

1亿VIP精品文档

相关文档