- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 运算符重载_2
4.7 重载流插入运算符和流提取运算符 C++的流插入运算符“”和流提取运算符“”是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream。cin和cout分别是istream类和ostream类的对象。 在类库提供的头文件中已经对“”和“”进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C++标准类型的数据。 4.7 重载流插入运算符和流提取运算符 用户自定义类型的数据,是不能直接用“”和“”来输出和输入的。如果想用它们输出和输入自己声明的类型的数据,必须对它们重载。 对“”和“”重载的函数形式如下: istream operator (istream ,自定义类 ); ostream operator (ostream ,自定义类 ); 4.7 重载流插入运算符和流提取运算符 重载运算符“”的函数的第一个参数和函数的类型都必须是istream类型,第二个参数是要进行输入操作的类。重载“”的函数的第一个参数和函数的类型都必须是ostream类型,第二个参数是要进行输出操作的类。因此,只能将重载“”和“”的函数作为友元函数或普通的函数,而不能将它们定义为成员函数。 4.7 重载流插入运算符和流提取运算符 4.7.1 重载流插入运算符 例4.7 程序中重载了运算符“”,运算符重载函数中的形参output是ostream类对象的引用,形参名output是用户任意起的。分析main函数最后第二行: coutc3; 运算符“”的左面是cout,前面已提到cout是ostream类对象。“”的右面是c3,它是Complex类对象。 4.7 重载流插入运算符和流提取运算符 4.7.1 重载流插入运算符 由于已将运算符“”的重载函数声明为Complex类的友元函数,编译系统把“coutc3”解释为 operator(cout,c3) 即以cout和c3作为实参,调用下面的operator函数: ostream operator(ostream output,Complex c) { output″(″c.real″+″c.imag″i)″; return output;} 调用函数时,形参output成为cout的引用,形参c成为c3的引用。因此调用函数的过程相当于执行: cout″(″c3.real″+″c3.imag″i)″; return cout; 4.7 重载流插入运算符和流提取运算符 4.7.1 重载流插入运算符 说明: 在本程序中,在Complex类中定义了运算符“”重载函数为友元函数,因此只有在输出Complex类对象时才能使用重载的运算符,对其他类型的对象是无效的。如 couttime1; //time1是Time类对象,不能使用用于Complex类的重载运算符 4.7 重载流插入运算符和流提取运算符 4.7.2 重载流插入运算符 重载流提取运算符的目的是希望将“”用于输入自定义类型的对象的信息。 例4.8 4.8 不同类型数据间的转换 4.8.1 标准类型数据间的转换 在C++中,某些不同类型数据之间可以自动转换,例如 int i = 6; i = 7.5 + i; 编译系统对 7.5是作为double型数处理的,在求解表达式时,先将6转换成double型,然后与7.5相加,得到和为13.5,在向整型变量i赋值时,将13.5转换为整数13,然后赋给i。这种转换是由C++编译系统自动完成的,用户不需干预。这种转换称为隐式类型转换。 4.8 不同类型数据间的转换 4.8.1 标准类型数据间的转换 C++还提供显式类型转换,程序人员在程序中指定将一种指定的数据转换成另一指定的类型,其形式为 类型名(数据) 如 int(89.5) 其作用是将89.5转换为整型数89。 对于用户自己声明的类型,编译系统并不知道怎样进行转换。解决这个问题的关键是让编译系统知道怎样去进行这些转换,需要定义专门的函数来处理。 4.8 不同类型数据间的转换 4.8.2 用转换构造函数进行类型转换 几种构造函数: 默认构造函数。以Complex类为例,函数原型为 Complex( ); //没有参数 用于初始化的构造函数。函数原型的形式为 Complex(do
您可能关注的文档
最近下载
- 设备方案工程师岗位职责(3篇).docx
- 《欧洲民间故事》语文微课PPT课件.pptx VIP
- 电子商务视觉营销PPT全套完整教学课件.pptx
- T_CSTM 01224—2024(连续纤维增强复合材料光伏支架技术要求).pdf
- 二《洽谈》-【中职专用】高二语文同步精品课件(高教版2023·职业模块).pptx VIP
- 工程保修的管理措施.docx VIP
- 高考数学总复习高中数学思维导图汇编.pdf VIP
- 小学科学新教科版二年级上册第二单元 地球家园教案(共7课)(2025秋).doc
- 沪科版八年级物理(上册)期末试卷及答案.docx VIP
- 2023年广西高职对口中职升学考试英语试题.pdf VIP
文档评论(0)