- 1、本文档共68页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言第9次课解读
4.6 重载流插入和流提取运算符 C++的流插入运算符“”和流提取运算符“”是在类库中提供的,分别是istream类和ostream类。cin 和 cout 分别是istream和 ostream 类的对象。在类库提供的头文件中已经对“”和“”进行了重载,使之成为流流插入、流提取运算符,以进行数据的输入和输出。 凡是用 cout 和 cin 进行输入输出的,都要用 #include iostream.h 语句,把头文件包含到本程序中。 用户自己定义的类型的数据,不能直接用、来输入输出,必须进行重载才行。 4.7 不同类型数据间的转换 标准类型数据间的转换 标准数据间的自动转换:C++支持不同类型数据间的自动转换。比如: int i = 6; i = 7.5 + i; 求解表达式时,编译系统先将整数6转换成double类型6.0,再与7.5相加,和为13.5,然后在赋给整数变量 i 之前,将13.5转换成整数13,并赋给变量 i 。 显式类型转换:C++还支持标准数据间的显式数据类型转换,格式为: 数据类型名 (数据) 注意,它与C语言格式不同,C语言是 (数据类型名) 数据 C++保留了C语言的格式,但提倡用C++的格式。例如, int (13.6);结果等于13。 4.7 不同类型数据间的转换 转换构造函数:即conversion constructor function,它的作用是将一个其他类型的数据转换成指定类的对象。到现在为止,我们已经介绍了以下集中构造函数: 默认构造函数:如complex ( ); 用于初始化的构造函数:如complex (double r, double i) 复制构造函数:如 complex (complex c); 转换构造函数:只有一个形参,如: complex (double r) { real = r; image = 0; } 其作用是将double 型参数 r 转换成 complex 类的对象,将 r 作为复数的实部,虚部为0。 用户可以根据需要自己定义转换构造函数,在函数体中告诉编译系统,怎样进行转换。 4.7 不同类型数据间的转换 类型转换函数 C++用转换构造函数将指定类型的数据转换成类对象,但反过来做,转换构造函数不行。 C++用类型转换函数( type conversion function )来解决这个问题。 类型转换函数的作用:将一个类的对象转换成另一类型的数据。省去了对不同的运算符一一重载的麻烦。 类型转换函数的格式: operator 类型名( ) // 不能指定函数类型,被重载的是类型名 { 实现转换的语句 } // 函数没有参数 例如,已经声明了一个complex类,可以在类中定义如下的类型转换函数: operator double( ) // double类型重载后除了原有含义, { return real; } // 还有将complex对象转换成double类型的含义 4.7 不同类型数据间的转换 转换构造函数和类型转换函数有一个共同的特点:仅在需要的时候,系统会自动调用这些函数。 例如,若已定义double变量到 d1,d2,complex对象 c1,c2。且类中已定义了类型转换函数,设程序有以下表达式: d1 = d2 + c1 编译系统发现“+”左侧的d2是double型,右侧c1是 complex对象,如果没有对“+”重载,就会检测有无类型转换函数,结果发现对double的重载函数,就调用该函数,将complex对象c1转换成double型数据,建立了一个临时的double型变量,并与d2相加,最后将double 型的和数赋给变量d1。 4.7 不同类型数据间的转换 类型转换函数也使用operator关键字,因此也称为“类型转换运算符重载函数”。下面是一个运算符重载、转换构造函数的综合程序: 4.7 不同类型数据间的转换 程序分析: 如果没有定义转换构造函数,程序出错,因为即使重载运算符,也不能让complex对象与double数据相加。 定义了转换构造函数,也重载了“+”运算符,在处理c1+2.5时,编译系统解释为operator +(c1, 2.5),由于2.5不是complex 对象,系统先调用转换构造函数 complex(2.5),建立一个临时对象,其值为( 2.5 +0i )。表达式便成为:operator + (c1,complex(2.5)),两对象相加,结果赋给c3。 如果运算符重载为成员函数,其第一个参数必须是本类对象。当第一个操作数不是类对象时,不能将运算符重载为成员函数,否则交换律不适用。 4.7 不同类型数
您可能关注的文档
- 大数据培训_Module 13 支持大规模集群安装部署FusionInsight HD 安装部署精要.pptx
- BEWchapter5国际贸易术语解读.ppt
- Authware多媒体作品《全球变暖》说明书解读.docx
- 大数据工作收益精要.pptx
- 数据中心模型讲述.pptx
- 数据之巅PPT讲述.pptx
- BET-72细菌内毒素测定仪标准操作规程解读.doc
- 数据仓库(多维数据库模型)讲述.ppt
- BIM课程设计完整版解读.doc
- 数据中心机房可视化能源管理系统V1.0-20161112讲述.ppt
- 2024-2030年超高纯氖气行业市场现状供需分析及重点企业投资评估规划分析研究报告.docx
- 2024-2030年草莓果苗行业市场发展分析及发展趋势与投资管理策略研究报告.docx
- 2024-2030年草本植物饮料行业市场发展分析及发展前景与投资研究报告.docx
- 2024-2030年花胶产业规划及发展研究报告.docx
- 2024-2030年质量检验检测行业市场深度调研及发展趋势与投资战略研究报告 (2).docx
- 2024-2030年质量检验检测产业市场发展现状及发展趋势与投资前景预测研究报告 (2).docx
- 2024-2030年蒸汽机行业市场发展分析及投融资与风险研究报告.docx
- 2024-2030年药物治疗管理行业市场现状供需分析及重点企业投资评估规划分析研究报告.docx
- 其他大功率开关装置教学课件.ppt
- 农民田间学校建设方案全面版课件.ppt
最近下载
- 7《短歌行》《归园田居(其一)》 对比联读 教学设计 2024-2025学年统编版高中语文必修上册.docx
- 沪教版 七年级(上)数学 秋季课程 第4讲 整式的乘法(解析版).doc VIP
- 2024年萍乡卫生职业学院单招职业适应性测试模拟试题及答案解析.docx
- 生物 生命活动的主要承担者——蛋白质 专题练习.doc VIP
- 《摩登时代》-公开课件(设计).ppt VIP
- A7-10-制冷系统部件的检修.pdf
- Unit 2 I think that mooncakes are delicious! Section A(Grammar Focus-4c) 课件-九上英语.pptx VIP
- 2024年萍乡卫生职业学院单招职业技能测试题库及答案解析.docx VIP
- 父母借用子女名义购房协议书.doc
- 团体操花球串词.doc
文档评论(0)