- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[理学]c语言教程第三版第四章电子科大出版社
第四章 运算符重载 4.1 什么是运算符重载 4.1.1 运算符重载的方法 成员函数,友元函数的使用 表达式:c3=c1+c2; 友元函数:如果运算符左侧的操作数属于C++标准类型(如int)或是一个其他类的对象,并且函数中需要访问类的私有成员时,必须声明为友元函数 通常:将单目运算符重载为成员函数,将双目运算符重载为友元函数 4.1.5 重载单目运算符 重载流插入运算符和流提取运算符 重载流提取运算符“” 数据输出过程 数据输入过程 #includeiostream cin语句 cout语句 “+”号 整数相加 双精度数相加 单精度数相加 如何用“+”号进行两个复数的相加? “+”号重载 重载运算符的函数一般格式: 函数类型 operator 运算符名称 (形参表列) { 对运算符的重载处理 } 例如, 对“+”的重载: Complex operator + (Complex c1,Complex c2); 函数“operator+”重载了运算符+ 例 重载运算符“+”,使之能用于两个复数相加。 声明重载运算符的函数 定义重载运算符的函数 编译为:c1.operator +(c2) 不能重载的运算符只有5个: . (成员访问运算符) .* (成员指针访问运算符) ∷ (域运算符) sizeof (长度运算符) ?: (条件运算符) 例 将运算符“+”重载为适用于复数加法。 要求:重载函数不作为成员函数,而放在类外,作为Complex类的友元函数。 重载函数作为友元函数 编译为: operator+(c1,c2) 成员函数:要求运算表达式第一个参数(即运算符左侧的操作数)是一个类对象,而且与运算符函数的类型相同 第一个参数c1和运算符函数返回值的类型都是Complex 若想将一个复数和一个整数相加,如c1+i 表达式c3=c2+i; “+”左侧应为Complex类的对象 c3=i+c2; 第一个参数可以不是类对象,也可以是另外一个类的对象 数学上的交换律在此不适用 友元函数的使用 类中一旦定义了构造函数,系统将不再提供默认构造函数。 //赋值运算符重载函数只能作为类的成员函数 例:Complex a(1,2); ++a; 成员函数 友员函数 例:Complex a(1,2); ++a; 思考:为什么参数必须为引用? 例 有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,此时秒又从0开始算。要求输出分和秒的值。 运算符++的重载函数 返回当前对象的值 “++”和“--”运算符有前置和后置两种方式,在重载时C++约定: 在自增(自减)运算符重载函数中,增加一个int型形参,就是后置自增(自减)运算符函数。 int型的参数,只是为了与前置自增运算符重载函数有所区别 两个函数中返回的值不同 用插入运算符“”来输出用户自己声明的类的对象的信息 例 用重载的“”输出复数。 “+”重载为成员函数 “”重载为友元函数 只有在输出Complex类对象时才能使用重载的运算符 解释为: operator(cout,c3) 请思考: return output的作用是什么? 函数定义:operator 函数调用: coutc3解释为:operator(cout,c3) coutc3c2 (coutc3)c2相当于cout(新值)c2 return output就是return cout,作用:返回cout的当前值以便连续输出。 注意区分什么情况下的“”是标准类型数据的流插入符,什么情况下的“”是重载的流插入符。 例如:coutc35endl; 有下划线的是调用重载的流插入符,后面两个“”不是重载的流插入符 希望将“”用于输入自定义类型的对象的信息 例 增加重载流提取运算符“”,用“cin”输入复数,用“cout”输出复数。 * *
文档评论(0)