- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 5.1 运算符重载实例 5.2 不同类型数据间的转换 第5讲 运算符重载(下) 友元类 数据成员 1--n 成员函数 1--m 数据成员1--n1 成员函数1--m1 数据成员n1--n 成员函数m1--m C++提供输入流类istream和输出流类ostream;cin和cout分别是istream类和ostream类的对象 流插入运算符“”和流提取运算符“”是C++在类库中进行了重载,使之用来输出和输入C++标准类型的数据。问题(1)“”是双目还是单目运算符?操作数是哪些? (2)在使用“cout”时为啥要#include iostream 5.1运算符重载实例 用户自定义的类型数据(类),是否可以 用“”和“”进行输出和输入呢? 对“”和“”重载的函数形式如下: istream operator (istream ,自定义类); ostream operator (ostream ,自定义类); 重载流插入运算符“” 问题: (1)重载函数中的return output的作用是什么?在本程序中output的实参是哪个? (2)如何区分什么情况下的“”是标准类型数据的流插入符,什么情况下的“”是重载的流插入符。如coutc35endl; Ostream:Cout coutc3 cout C3 cout5 cout 5 C3 显示器 显示器 显示器 重载流提取运算符“” 5.1运算符重载实例 标准类型数据间的转换 在C++中,某些不同类型数据之间可以自动转换,例如 int i = 6; i = 7.5 + i; C++还提供显式类型转换,用户可以指定将数据转换成另一类型,其形式为:类型名(数据) ,如:int(89.5) 5.2 不同类型数据间的转换 非标准类型数据间的转换 对于用户自己声明的类型,即非标准类型。编译系统并不知道怎样进行转换? 如何实现不同类型的类对象之间的转换呢? 5.2 不同类型数据间的转换 1.类型转换构造函数:以其他类型数据为参数来构建一个成自身类的对象 设计方法 (1) 先声明一个类 (2) 在这个类中定义一个只有一个参数的构造函数,参数的类型是需要转换的类型,在函数体中指定转换的方法 例:Teacher(Students) {num=s.num;strcpy(name,s.name);sex=s.sex;} 注意:不仅可以将一个标准类型数据转换成类对象,也可以将另一个类的对象转换成转换构造函数自身类的对象 提问:对象s中的num,name,sex如果是私有成员是否可以?为什么? 构造函数小结: 默认(默认参数)构造函数; 带初始化参数列表构造函数; 复制构造函数;Complex (Complex c); 类型转换构造函数;Complex(double r) {real=r;imag=0;} 以上构造函数可同时出现在同个类中,是构造函数的重载。编译系统会根据建立对象时给出的实参的个数与类型选择形参与之匹配的构造函数 提问:(1)类型转换构造与复制构造函数的区别与联系? (2)类型转换构造函数与一个有参构造函数的区别与联系? (3)转换构造函数能否将自身类对象转换为其他类型数据? 2.类型转换重载函数:C++提供类型转换函数(type conversion function)来解决“将一个类的对象转换成另一类型的数据”的问题 类型转换函数的一般形式: Operator 类型名() {实现转换的语句} 例:如果已声明了Complex类,可在Complex类中定义类型转换函数operator double( ) {return real;} 在函数名前面不能指定函数类型,函数没有参数。其返回值的类型是由函数名中指定的类型名来确定 类型转换函数只能作为成员函数,因为转换的主体是本类的对象。不能作为友元函数或普通函数 5.2 不同类型数据间的转换 2.5+double (c1):自动转换规则,类型转换重载 例. 包含转换构造函数、运算符重载函数 operator+(c1,Complex(2.5)):运算符重载调动转换构造函数 问题:在程序中增加类型转换函数,23语句如何执行? 先调用类型转换,再调用构造函数,WHY? 包含转换构造函数、运算符重载函数和类型转换函数 5.2 不同类型数据间的转换 本讲重点 对象的引用做函数参数的意义(见P335) 对和的重载的方法 类的转换构造函数:其他类型?本类 类的类型转换重载函数:本类?标准类型 根据计算表达式的需要,编译系统会自动调用转换构造和重载函数,构造临时对象或变量 结合类型转换函数,一般将双目运算法重载为有元,满足交换
您可能关注的文档
- 华南师范《模拟电子电路》2012模电各章重点内容及总复习.doc
- 华南师范大学《电磁学与光学》第5章场论和路论的关系.ppt
- 华南师范大学《电磁学与光学》第6章平面电磁波.ppt
- 华南师范大学《电磁学与光学》第7章规则波导和空腔谐振器.ppt
- 华南师范大学《电磁学与光学》第4章静态场分析.ppt
- 华南师范大学《电磁学与光学》第8章电磁波的辐射.ppt
- 华南师范大学《电磁学与光学》电磁波复习课件.ppt
- 华南师范大学《电磁学与光学》电磁场与电磁波必考重点填空题经典.doc
- 华南师范大学《电磁学与光学》电磁场与电磁波简答题归纳.doc
- 华南师范大学《电磁学与光学》电磁场与电磁波复习课件.ppt
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
文档评论(0)