- 1、本文档共99页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计课程介绍-第11章运算符重载精选
第11章 运算符重载 什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例 什么是运算符重载 使系统内置的运算符可以用于类类型 例如:+ 运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望: a3 = a1 + a2; 即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。 问题的提出 把某些事交给系统去做,用户只要知道相加就可 扩充运算符的功能 增强了C++ 语言的可扩充性 使用户定义的类更像系统的内置类型 运算符重载的限制 不是所有的运算符都能重载 重载不能改变运算符的优先级和结合性 重载不能改变运算符的操作数个数 不能创建新的运算符 可以重载的运算符 不能重载的运算符 第11章 运算符重载 什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例 运算符重载的方法 运算符重载就是写一个函数解释某个运算符在某个类中的含义 要使得系统能自动找到重载的这个函数,函数名必须要体现出和某个被重载的运算符的联系。 C++中规定,重载函数名为 operator@ 其中,@为要重载的运算符。如要重载“+”运算符,该重载函数名为operator+。要重载赋值运算符,函数名为operator=。 函数原型 运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同 运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数 如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C++中,把隐含参数this作为运算符的第一个参数。 当把一个一元运算符重载成成员函数时,该函数没有形式参数。 把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。 重载实例 为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数 方案一:重载成成员函数 class Rational { private: int num; int den; void ReductFraction(); public: Rational(int n = 0, int d = 1) { num = n; den = d;} Rational operator+(const Rational r1) const; Rational operator*(const Rational r1) const; bool operator(const Rational r1) const; bool operator==(const Rational r1) const; bool operator(const Rational r1) const; bool operator=(const Rational r1) const; bool operator=(const Rational r1) const; bool operator!=(const Rational r1) const; void display() { cout num / den;} } 函数实现 Rational Rational::operator+(const Rational r1) const { Rational tmp; tmp.num = num * r1.den + r1.num * den; tmp.den = den * r1.den; tmp.ReductFraction(); return tmp; } Rational Rational::operator*(const Rational r1) const { Rational tmp; tmp.num = num * r1.num; tmp.den = den * r1.den; tmp.ReductFraction(); return tmp; } bool Rational::operator(const Rational r1) const { return num * r1.den den * r1.num; } bool Rational::operator==(const Rational r1) const { return num == r1.num den == r1.den;} bo
您可能关注的文档
- Aruba_WLAN基础知识培训胶片精选.ppt
- ASIC课程设计-MOS输出级电路设计与Hspice仿真精选.docx
- ASON智能光网络介绍精选.ppt
- ATM承载IP解决方案.精选.ppt
- AutoCAD 2004 PPT电子课件教案-第1章 AutoCAD概述精选.ppt
- AutoCAD 2004 PPT电子课件教案-第2章 二维绘图命令精选.ppt
- AutoCAD 2004 PPT电子课件教案-第4章 辅助绘图命令精选.ppt
- AutoCAD 2004 PPT电子课件教案-第5章对象特性精选.ppt
- AutoCAD 2004 PPT电子课件教案-第6章文字和尺寸标注精选.ppt
- AutoCAD 2004 PPT电子课件教案-第7章块、外部参照和图像附着精选.ppt
最近下载
- 论 自由 精品读本.pdf
- 医疗器械质量管理体系文件.pptx
- 金融中心施工总承包工程项目特色与观摩亮点介绍.pptx
- 小学数学六年级上册期中易错题重难点试卷含详细答案解析1524.docx
- 做自己的心理医生【26页】.pptx
- Module 4 单元整体教学设计 外研版(三起)六年级上册英语.docx
- 环球金融中心项目专项测量放线施工方案.docx
- 环球金融中心项目施工总承包工程质量创优策划.ppt
- 鼎信JB-QT-TS3200火灾报警控制器(联动型)安装使用说明书 XF2.900.029AS Ver.pdf VIP
- 中华护理学会团体标准TCNAS 21─2021解读:胰岛素皮下注射(1).pptx
文档评论(0)