




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020/4/27,.,1,7.3几个典型运算符重载,2020/4/27,.,2,7.3几个典型运算符重载,数学类中常用的几个运算重载的特点和应用,6.3几个典型运算符重载,2020/4/27,.,3,7.3.1重载+与-,设AAobject;运算符+和-有两种方式:前置方式:+Aobject-Aobject,后置方式:Aobject+Aobject-,成员函数重载A:Aoperator+();解释为:Aobject.operator+();友员函数重载friendAoperator+(A,成员函数重载A:Aoperator+(int);解释为:Aobject.operator+(0);友员函数重载:friendAoperator+(A解释为:operator+(Aobject,0),伪参数,6.3.1重载+与-,2020/4/27,.,4,成员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;Increaseoperator+();/前置Increaseoperator+(int);/后置private:unsignedvalue;IncreaseIncrease:operator+()value+;return*this;IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;voidmain()Increasea,b,n;for(inti=0;i10;i+)a=n+;coutn=;n.display();couta=;a.display();for(i=0;i10;i+)b=+n;coutn=;n.display();coutb=;b.display();,6.3.1重载+与-,2020/4/27,.,5,成员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;Increaseoperator+();/前置Increaseoperator+(int);/后置private:unsignedvalue;IncreaseIncrease:operator+()value+;return*this;IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;voidmain()Increasea,b,n;for(inti=0;i10;i+)a=n+;coutn=;n.display();couta=;a.display();for(i=0;i10;i+)b=+n;coutn=;n.display();coutb=;b.display();,Increaseoperator+();,IncreaseIncrease:operator+()value+;return*this;,+n;,预定义版本,6.3.1重载+与-,2020/4/27,.,6,成员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;Increaseoperator+();/前置Increaseoperator+(int);/后置private:unsignedvalue;IncreaseIncrease:operator+()value+;return*this;IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;voidmain()Increasea,b,n;for(inti=0;i10;i+)a=n+;coutn=;n.display();couta=;a.display();for(i=0;i10;i+)b=+n;coutn=;n.display();coutb=;b.display();,Increaseoperator+();,IncreaseIncrease:operator+()value+;return*this;,+n;,重载版本,6.3.1重载+与-,2020/4/27,.,7,成员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;Increaseoperator+();/前置Increaseoperator+(int);/后置private:unsignedvalue;IncreaseIncrease:operator+()value+;return*this;IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;voidmain()Increasea,b,n;for(inti=0;i10;i+)a=n+;coutn=;n.display();couta=;a.display();for(i=0;i10;i+)b=+n;coutn=;n.display();coutb=;b.display();,Increaseoperator+(int);,IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;,n+;,预定义版本,6.3.1重载+与-,2020/4/27,.,8,成员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;Increaseoperator+();/前置Increaseoperator+(int);/后置private:unsignedvalue;IncreaseIncrease:operator+()value+;return*this;IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;voidmain()Increasea,b,n;for(inti=0;i10;i+)a=n+;coutn=;n.display();couta=;a.display();for(i=0;i10;i+)b=+n;coutn=;n.display();coutb=;b.display();,Increaseoperator+(int);,IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;,n+;,重载版本,6.3.1重载+与-,2020/4/27,.,9,成员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;Increaseoperator+();/前置Increaseoperator+(int);/后置private:unsignedvalue;IncreaseIncrease:operator+()value+;return*this;IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;voidmain()Increasea,b,n;for(inti=0;i10;i+)a=n+;coutn=;n.display();couta=;a.display();for(i=0;i10;i+)b=+n;coutn=;n.display();coutb=;b.display();,6.3.1重载+与-,2020/4/27,.,10,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,2020/4/27,.,11,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,+n;,通过引用参数操作对象,6.3.1重载+与-,2020/4/27,.,12,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,复制构造局部对象,6.3.1重载+与-,2020/4/27,.,13,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,伪参数,6.3.1重载+与-,2020/4/27,.,14,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,2020/4/27,.,15,7.3.2重载赋值运算符,赋值运算符重载用于对象数据的复制operator=必须重载为成员函数重载函数原型为:类型,6.3.2重载赋值运算符,2020/4/27,.,16,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/4/27,.,17,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,初始化对象时调用复制构造函数,6.3.2重载赋值运算符,2020/4/27,.,18,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,修改对象时调用重载赋值运算符函数,6.3.2重载赋值运算符,2020/4/27,.,19,定义Name类的重载赋值函数,Name:Name(char*pN)coutConstructingpNendl;pName=newcharstrlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(constName,Name,6.3.2重载赋值运算符,2020/4/27,.,20,Name:Name(char*pN)coutConstructingpNendl;pName=newcharstrlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(constName,定义Name类的重载赋值函数,Name,6.3.2重载赋值运算符,2020/4/27,.,21,Name:Name(char*pN)coutConstructingpNendl;pName=newcharstrlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(constName,定义Name类的重载赋值函数,Name,6.3.2重载赋值运算符,2020/4/27,.,22,Name:Name(char*pN)coutConstructingpNendl;pName=newcharstrlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(constName,定义Name类的重载赋值函数,Name,LiHai,6.3.2重载赋值运算符,2020/4/27,.,23,Name:Name(char*pN)coutConstructingpNendl;pName=newcharstrlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(constName,定义Name类的重载赋值函数,Name,LiHai,6,6.3.2重载赋值运算符,2020/4/27,.,24,Name:Name(char*pN)coutConstructingpNendl;pName=newcharstrlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(constName,定义Name类的重载赋值函数,Name,LiHai,6.3.2重载赋值运算符,2020/4/27,.,25,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/4/27,.,26,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/4/27,.,27,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/4/27,.,28,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/4/27,.,29,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/4/27,.,30,7.3.3重载运算符和(),运算符和()是二元运算符和()只能用成员函数重载,不能用友元函数重载,6.3.3重载运算符和(),2020/4/27,.,31,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,6.3.3重载运算符和(),2020/4/27,.,32,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,定义重载函数的类名,6.3.3重载运算符和(),2020/4/27,.,33,1重载下标算符,重载格式类:类型operator类型;,运算符用于访问数据对象的元素,函数返回类型,6.3.3重载运算符和(),2020/4/27,.,34,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,函数名,6.3.3重载运算符和(),2020/4/27,.,35,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,右操作数为符合原语义,用int,6.3.3重载运算符和(),2020/4/27,.,36,1重载下标算符,重载格式类:类型operator()类型;,运算符用于访问数据对象的元素,例设x是类X的一个对象,则表达式xy可被解释为x.operator(y),显式声明一个参数,6.3.3重载运算符和(),2020/4/27,.,37,2重载函数调用符(),/用重载()算符实现数学函数的抽象#includeclassFpublic:doubleoperator()(doublex,doubley);doubleF:operator()(doublex,doubley)returnx*x+y*y;voidmain()Ff;coutf(5.2,2.5)endl;,6.3.3重载运算符和(),2020/4/27,.,38,2重载函数调用符(),/用重载()算符实现数学函数的抽象#includeclassFpublic:doubleoperator()(doublex,doubley);doubleF:operator()(doublex,doubley)returnx*x+y*y;voidmain()Ff;coutf(5.2,2.5)endl;,f.operator()(5.2,2.5),6.3.3重载运算符和(),2020/4/27,.,39,2重载函数调用符(),/用重载()算符实现数学函数的抽象#includeclassFpublic:doubleoperator()(doublex,doubley);doubleF:operator()(doublex,doubley)returnx*x+y*y;voidmain()Ff;coutf(5.2,2.5),用于输出和输入用户自定义的数据类型,7.3.4重载流插入和流提取运算符,6.3.4重载流插入和流提取运算符,2020/4/27,.,41,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,6.3.4重载流插入和流提取运算符,2020/4/27,.,42,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,重载几个运算符,6.3.4重载流插入和流提取运算符,2020/4/27,.,43,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,标准流类,6.3.4重载流插入和流提取运算符,2020/4/27,.,44,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用预定义版本,6.3.4重载流插入和流提取运算符,2020/4/27,.,45,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cin.operator(A),6.3.4重载流插入和流提取运算符,2020/4/27,.,46,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cout.operator(A),6.3.4重载流插入和流提取运算符,2020/4/27,.,47,vector:vector(intsize)if(size100)cout=0,为vector类重载流插入运算符和提取运算符,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业教育服务的个人数据保护政策与实践
- 智慧城市规划中的绿色建筑技术探索
- 教育资源的知识产权登记与维权指南
- 2024年度河南省护师类之社区护理主管护师模考预测题库(夺冠系列)
- 韩山师范学院《大学体育V》2023-2024学年第二学期期末试卷
- 江苏师范大学《病理学与病理生理学实验》2023-2024学年第二学期期末试卷
- 杭州医学院《建筑设计及动态表现》2023-2024学年第二学期期末试卷
- 山西工程技术学院《中国法律史》2023-2024学年第二学期期末试卷
- 广西艺术学院《排水施工》2023-2024学年第二学期期末试卷
- 昭通卫生职业学院《英语视听说,听力(三)》2023-2024学年第二学期期末试卷
- 《战略资源稀土》课件
- 《基础护理学》第七版考试题库大全-上部分(600题)
- 科技在宠物健康监测中的应用
- 2025年度飞机买卖及航空法律咨询服务合同4篇
- 工程测量学知到智慧树章节测试课后答案2024年秋山东科技大学
- 2025年云南省社会科学院中国(昆明)南亚东南亚研究院招聘高层次人才7人历年高频重点提升(共500题)附带答案详解
- DB33-T 1401-2024 公共机构合同能源管理实施规范
- 产褥期脓毒血症护理查房
- 管道打压、吹扫方案
- 石头雕刻合同范例
- 《个人所得税法解读》课件
评论
0/150
提交评论