- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]c_运算符重载
第6讲 运算符重载 运算符函数 重载为类成员函数 重载为友元函数 1 引言 基本类型的数据可实现各种运算,如: x+y //x与y可为int, float, double…型 但这些运算符并不适合对象,若要定义对象的特定操作,那么必须重载该运算符。 例如在string类中可以使用+运算符链接两个字符串、关系运算符(,=,,=,==,!=)比较两个字符串。 string s1,s2; //s1,s2 为字符串对象 s1=s1+s2; Complex类 Complex a(1,2), b(1,3),c; 可否:c=a+b; 复数类 //complex.h class Complex { public: Complex(double r=0,double i=0) ; void disp(); Complex addition(Complex ); Complex subtraction(Complex ); private: double real,imag; }; 问题引出:自定义类型的运算 在对复数对象进行算术运算时,使用算术运算符应最直观最方便,如a+b,那么能否用相似的语法计算两个复数类对象的和? a+b 运算符函数 C++提供的一种特殊的函数,这些函数有特殊的函数名,由operator与真正的运算符构成: operator+ operator - 这些函数可使用运算符方式进行调用,也可以使用传统的函数调用方式进行调用: a.operator+(b) a+b 运算符重载 赋予已有的运算符多重含义,如运算符“”既作为流的插入运算符,又作为移位运算符,根据其操作对象的不同,执行其不同的功能。 复数类定义 #include iostream.h Complex::Complex(double r,double i) { real=r; imag=i; } void Complex::disp() { if (imag0) coutreal+imagiendl; else if (imag0) coutrealimagiendl; else coutrealendl; } Complex Complex::addition(Complex t) { double r=real+t.real; double i=imag+t.imag; return Complex(r,i); } Complex Complex::subtraction(Complex t) { return Complex(real-t.real,imag-t.imag); } Complex Complex::operator+(Complex t) { return addition (t); } Complex Complex::operator-(Complex t) { return subtraction(t); } 运算符函数的使用 //testComplex.cpp #include iostream.h #includecomplex.h void main() { Complex a(10,10),b(15,15),c; a.disp(); b.disp(); c=a+b; c.disp(); c=a-b; c.disp(); } 运算符重载时: 不能改变运算符的优先级和结合性. 不改变其语法结构,也就是不能改变操作数的个数。即单目的只能重载为单目运算符,双目的只能重载为双目运算符。 只能对已有运算符重载,不允许创建新的自定义运算符。 一般不改变运算符本身的含义。 不可重载的运算符(5个) .(成员访问) .*(成员访问指针成员) :: (作用域运算符) ?:(条件运算符) sizeof(内存空间) C++提供了运算符重载的机制,程序员可对自定义的数据类型使用C++本身提供的标准运算符进行运算,运算的实现由重载运算符的特殊函数来完成。这些函数有特殊的函数名(operator +),可使用运算符方式进行调用,也可以使用传统的函数调用方式进行调用。 在c++中,允许对大多数的运算符进行重载,通过定义重载运算符的函数使它能够用于特定类的对象。 运算符重载实际上是将运算符重载为一个函数,在重载某个运算符时,实际上就是定义一个重载运算符的函数,函数名为 operator 运算符。在执行被重载的运算符时,系统自动调用该函数以实现相应的运算. 运算符重载是通过定义函数实现的,运算符重载实质上是函数的重载(遵循函数重载的原则) C++中提供了两种形式的运算符重载,即重载为: 成员函数 友元函数 3 重载
您可能关注的文档
- [工学]6 模拟与高精度计算.ppt
- [工学]6 CCS.ppt
- [工学]6-3 参数的区间估计.pdf
- [工学]5钢的表面热处理.ppt
- [工学]6反应动力学.ppt
- [工学]64学时数字电子1.ppt
- [工学]6-5 X射线衍射09参考.ppt
- [工学]6本构与强度理论.ppt
- [工学]5第五章污染防治技术1大气.ppt
- [工学]6基因功能研究技术2011.ppt
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
最近下载
- 13套题,必过,阿坝州拟任科级领导干部任职资格政治理论考试题汇总.pdf
- 2023年关于医药领域腐败问题全面集中整治自查自纠报告与医院开展医疗领域群众身边腐败作风问题专项整治工作总结【两篇】.docx VIP
- 高中语文必修二课件--念奴娇·赤壁怀古.ppt VIP
- 高中化学选修三全套.pptx VIP
- 中国特色社会主义理论体系的形成的历史条件.ppt VIP
- 领导讲话稿写作方法和技巧.ppt
- 高中:原创语文《反对党八股》(定稿).pptx VIP
- 液压升降机油路图液压升降机毕业设计.doc VIP
- 《管理学原理》全套课后习题答案(大学期末复习资料).docx
- 高中课件:原创语文《反对党八股》公开课课件.pptx VIP
文档评论(0)