- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章 运算符重载 11.1 重载运算符的概念 一个运算符代表一种操作,常用的运算通常可借助一个运算符来实现简单表示,如a+b。 C++允许对运算符进行重载,实质是对表示某种运算的特殊函数进行重载。 11.1.1 重载运算符的函数特征 常见运算对于C++系统的内置类型是有效的,但对于用户定义的数据类型,多数运算不再有效。 11.1.1 重载运算符的函数特征(续) 增加上述函数实现了对加法运算的重载。 使用方式: c = a + b; c = operator+(a, b); 运算符重载可以使程序更容易理解,但并不是必需的。 11.1.1 重载运算符的函数特征(续) 如果@代表一个运算符,则“operator@”是代表@运算的“函数名”。 运算符重载通常是与类定义联系在一起的。 11.1.2 类重载运算符的两种方法 1. 成员和非成员重载 将运算符重载函数定义为友员(普通函数,非成员)和成员(类的方法)。 11.1.2 为类重载运算符的两种方法(续) 2. 采用成员和非成员重载运算符时的函数原型差异 重要差别:函数形参的个数不同。 对于一个n目的运算符,使用友员重载时仍需n个形式参数,而使用成员重载时只有n-1个参数. 原因: 每个类的非静态方法都有一个缺省的this指针作为第一个参数。 类的友元函数则没有this指针。 11.1.2 为类重载运算符的两种方法(续) 3. 不同重载方法对运算符使用形式的影响 对于运算符@来说,采用类的成员函数重载时可以“a@b” 和a. operator@ ( b )两种形式使用运算符,如: Point a(1,1), b(2,3); Point c = a + b; Point c = a.operator + ( b ); 采用友员重载时可以采用运算和函数调用两种语法形式,如: Point d = a + b; Point e = operator+(a, b); 11.1.2 为类重载运算符的两种方法(续) 11.1.2 为类重载运算符的两种方法(续) 4. 使用成员和非成员重载的限制 必须使用成员而不能使用非成员重载: =、- 、( )、[ ] 只能使用友员重载而不能使用类成员重载: 、 如果运算符属于赋值类运算,操作中需要修改当前对象(this),一般使用成员重载: +=、-=、*=、/=、++(前置)、--(前置) 如果运算符的第一个操作数不是当前定义的类类型数据则必须使用友员重载。 11.1.2 为类重载运算符的两种方法(续) 原因:若采用成员时第一个参数必然是this。 11.1.3 重载运算符的限制 ⑴只能重载C++已有的运算符,不能臆造。 ⑵重载时应尽量保持运算符原来的意义,不应“挪为他用”。 ⑶不能改变运算符的本来特性,包括操作数个数、优先级别和结合次序。 ⑷不能改变运算符对基本类型数据的操作方式,不能定义只有内置类型数据为参数的运算符重载。 (5)以下5个C++运算符不能被重载: .(成员访问运算符)、.*(成员指针访问运算符)、 ::(域解析符)、?:(条件运算符)、sizeof 11.2 重载运算符函数的设计 1. 重载运算符的返回值 运算符函数的返回值类型一般都与当前类的类型有关。 运算符函数返回对象的值还是对象引用 原则:如果运算符形成的表达式(函数调用表达式)需要作为左值则返回引用,否则返回值。 11.2 重载运算符函数的设计(续) ⑴+、-、*、/、%、后置的++和-- 因为加法、减法、乘法、除法和后置的加1和减1表达式不能做左值,重载时应返回对象的值,故应采用类似如下的函数原型: Point operator+(...); Point operator++(...); ⑵=、[ ]、前置的++和-- 由于赋值表达式、下标引用变量和前置的加1、减1表达式都可做左值,故应返回对象的引用,如: Point operator=(...); char operator[](...); 11.2 重载运算符函数的设计(续) 2. 运算符函数的引用参数 当运算符需要操作类的对象时,应确定该使用指针还是引用做函数的参数。一般不直接使用类对象做参数,其中的一个重要原因是效率。 此外,如果运算符函数中不修改被引用对象的值,通常要对参数进行常量限制,如: Point operator+(const Point a, const Point b); 11.3 若干常见运算符的重载 一些其它重要的运算符重载。 11.3.1 重载增量运算符++ 1. 前置的++ 前置++遵循一般的单目运算符重载规范,但由于可以作为左值,故函数应该返回当前对象的引用。 11.3.1 重载增量运算符++(续) 11.3.1 重载增
您可能关注的文档
- 机械识图 教学课件 作者 柳阳明 第6章 标准件与常用件.ppt
- 机械识图 教学课件 作者 柳阳明 第7章 零 件 图.ppt
- 机械识图 教学课件 作者 柳阳明 第8章 装 配 图.ppt
- 机械识图 教学课件 作者 柳阳明 第9章展开图与焊接图.ppt
- 机械识图 教学课件 作者 柳阳明 第10章中望CAD 2009基础知识.ppt
- 机械识图教学课件 作者 邱丹力 第二章.ppt
- 机械识图教学课件 作者 邱丹力 第六章 装配图.ppt
- 机械识图教学课件 作者 邱丹力 第三章.ppt
- 机械识图教学课件 作者 邱丹力 第四章(1).ppt
- 机械识图教学课件 作者 邱丹力 第五章 零件图.ppt
- 2025年鸡西市麻山区公益性岗位招聘8人(公共基础知识)测试题附答案.docx
- 杭州之江湾股权投资基金管理有限公司招聘参考题库附答案.docx
- 2026江苏辖区农村商业银行常熟农商银行校园招聘200人(公共基础知识)测试题附答案.docx
- 2025年中国石油新疆油田分公司秋季高校毕业生招聘360人(公共基础知识)综合能力测试题附答案.docx
- 2023年攀枝花市直属机关遴选公务员笔试真题汇编附答案解析(夺冠).docx
- 2026广发银行太原分行校园招聘(公共基础知识)测试题附答案.docx
- 2025四川成都医学院招聘事业编制辅导员10人(公共基础知识)测试题附答案.docx
- 2026年毛概期末考试试题库必考题.docx
- 2025年合肥市某国有企业2025年岗位外包招聘(公共基础知识)测试题附答案.docx
- 2026年重庆青年职业技术学院单招(计算机)测试模拟题库附答案.docx
最近下载
- 管道内检测介绍.ppt VIP
- 衍纸教案(16课时)社团兴趣小组活动.doc VIP
- 绵阳市事业单位2025年公开选调工作人员备考题库(70人)附答案解析.docx VIP
- 乡镇畜牧站动物检疫员招聘面试经典题及答案.docx VIP
- 2026年哈尔滨中考历史备考全攻略 (知识点归纳,必考知识点 真题模拟试卷及解析).docx VIP
- (一诊)毕节市2025届高三第一次诊断性考试 语文试卷(含答案解析).docx
- 燃气从业人员安全知识培训.pptx VIP
- 数学史数学史试卷(数学史).doc VIP
- [2025秋期版]国开电大专科《监督学》一平台形成性考核一至四在线形考试题及答案 .pdf
- 2025额定电压1kV及以下钢丝加强芯架空绝缘电缆.docx VIP
原创力文档


文档评论(0)