- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
说明: 重载运算符是由相应函数实现的,何必对运算符重载呢? 答:类的声明和使用是分离的,所以对用户方便。 运算符重载后,其原有的功能仍保留; C ++允许用户自定义新类型,所以必须允许运算符重载,以扩大C++已有运算符的使用范围,使其能作用于类对象,进行赋值运算、关系运算、逻辑运算和输入输出运算。 C++没有为类对象重新定义一批新运算符,而是,对现有运算符进行重载。 * 什么是运算符重载 运算符重载的方法 重载运算符的规则 运算符函数作类成员函数和友元函数 重载双目运算符 重载单目运算符 重载插入运算符和提取运算符 不同类型数据间的转换 * 第四章运算符重载 本章要点 介绍运算符重载的概念,指出运算符重载的实质就是函数重载,给出运算符重载函数定义的一般格式。通过对两个复数相加运算符重载的例子,我们要讲解运算符重载函数作为类的成员函数和友元函数的方法。最后分别对双目运算符和单目运算符进行了重载。特别给出单目运算符的前置自增和后置自增的区别。转换构造函数和类型转换函数是本章的难点。 本章内容包括: 什么是运算符重载 运算符重载的方法 运算符重载的规则 成员函数和友元函数重载 重载双目运算符 重载单目运算符 重载流插入和提取运算符 不同类型数据间的转换 4.1 什么是运算符重载 (operator overloading) 前面介绍了函数重载,同一个函数名可以代表不同功能的函数。 运算符也可以重载。 5+8,5.8+3.67 “+”运算符重载能适用 于int、float和double型 问题:将“+”运算符重载为复数相加?实现:c3=c1+c2 首先,定义一个专门的函数来实现复数相加 例4.1通过函数来实现复数相加 #include iostream using namespace std; class Complex {public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex complex_add(Complex c2); void display(); private: double real; double imag; }; Complex Complex::complex_add(Complex c2) {Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } void Complex::display() {cout(real,imagi)endl;} int main() {Complex c1(3,4),c2(5,-10),c3; c3=plex_add(c2); coutc1=; c1.display(); coutc2=; c2.display(); coutc1+c2=; c3.display(); return 0; } 构造函数重载 复数相加函数,返回值类型为类类型 调用 c.real=real+c2.real; c.imag=imag+c2.imag; c.real=this-real+c2.real; c.imag=this-imag+c2.imag; c.real=c1.real+c2.real; c.imag=c1.imag+c2.imag; c3=plex_add(c2); 4.2 运算符重载的方法 运算符重载是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,即执行表达式就是调用函数的过程。运算符重载是通过定义函数实现的,运算符重载实质上是函数的重载。 一般格式: 函数类型 operator 运算符名称(形参表列) {对运算符的重载处理} 例如:复数加法的函数原型: Complex operator + (Complexc1,Complex c2) 函数名 例4.2重载运算符用于复数相加 #include iostream using namespace std; class Complex {public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator + (Complex c2); void display(); private: double real; double imag; }; Complex Complex::ope
您可能关注的文档
最近下载
- 邮政和快递行业的危险源辨识与风险评估.pptx
- 军事理论复习题(1).docx VIP
- 0001凯叔《西游记》第一话 石猴出世 幼儿园 讲故事 播报.ppt
- 20182019学年山西省太原市七年级(上)期末数学试卷.docx
- 2023-2024学年度上学期人教版六年级语文寒假课内阅读专项训练 有答案.pdf VIP
- 国家开放大学-公司概论第四次形考任务答案.pdf
- DB34_T 2566-2021 金属非金属露天矿山安全质量评审准则.docx
- 2021-2022学年山西省太原市七年级(上)期末数学试卷.doc VIP
- 《九年级物理沪粤版下册 第十八章 18.2 怎样用电才安全》ppt 课件.pptx
- 人教PEP版(2024)三年级上册英语Unit 5《The colourful world》单元作业设计.docx
文档评论(0)