




已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
7.3几个典型运算符重载,1,7.3几个典型运算符重载,数学类中常用的几个运算重载的特点和应用,6.3几个典型运算符重载,2,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重载+与-,3,成员函数重载+,#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重载+与-,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();,Increaseoperator+();,IncreaseIncrease:operator+()value+;return*this;,+n;,预定义版本,6.3.1重载+与-,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重载+与-,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+(int);,IncreaseIncrease:operator+(int)Increasetemp;temp.value=value+;returntemp;,n+;,预定义版本,6.3.1重载+与-,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重载+与-,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();,6.3.1重载+与-,9,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,10,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,+n;,通过引用参数操作对象,6.3.1重载+与-,11,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,复制构造局部对象,6.3.1重载+与-,12,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,伪参数,6.3.1重载+与-,13,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,14,7.3.2重载赋值运算符,赋值运算符重载用于对象数据的复制operator=必须重载为成员函数重载函数原型为:类型,6.3.2重载赋值运算符,15,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,16,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,初始化对象时调用复制构造函数,6.3.2重载赋值运算符,17,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,修改对象时调用重载赋值运算符函数,6.3.2重载赋值运算符,18,定义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重载赋值运算符,19,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重载赋值运算符,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重载赋值运算符,21,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重载赋值运算符,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,6.3.2重载赋值运算符,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.3.2重载赋值运算符,24,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,25,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,26,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,27,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,28,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,29,7.3.3重载运算符和(),运算符和()是二元运算符和()只能用成员函数重载,不能用友元函数重载,6.3.3重载运算符和(),30,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,6.3.3重载运算符和(),31,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,定义重载函数的类名,6.3.3重载运算符和(),32,1重载下标算符,重载格式类:类型operator类型;,运算符用于访问数据对象的元素,函数返回类型,6.3.3重载运算符和(),33,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,函数名,6.3.3重载运算符和(),34,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,右操作数为符合原语义,用int,6.3.3重载运算符和(),35,1重载下标算符,重载格式类:类型operator()类型;,运算符用于访问数据对象的元素,例设x是类X的一个对象,则表达式xy可被解释为x.operator(y),显式声明一个参数,6.3.3重载运算符和(),36,2重载函数调用符(),/用重载()算符实现数学函数的抽象#includeclassFpublic:doubleoperator()(doublex,doubley);doubleF:operator()(doublex,doubley)returnx*x+y*y;voidmain()Ff;coutf(5.2,2.5)endl;,6.3.3重载运算符和(),37,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重载运算符和(),38,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重载流插入和流提取运算符,40,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,6.3.4重载流插入和流提取运算符,41,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,重载几个运算符,6.3.4重载流插入和流提取运算符,42,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,标准流类,6.3.4重载流插入和流提取运算符,43,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用预定义版本,6.3.4重载流插入和流提取运算符,44,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cin.operator(A),6.3.4重载流插入和流提取运算符,45,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cout.operator(A),6.3.4重载流插入和流提取运算符,46,vector:vector(intsize)if(size100)c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中国邮政集团有限公司山东省分公司招聘笔试题库历年考点版附带答案详解
- 2025中国电信天翼数字生活科技有限公司招聘笔试题库历年考点版附带答案详解
- 2025年呼吸内科常见呼吸系统疾病诊断模拟测试卷答案及解析
- 2025年食品饮料行业食品安全与健康营养研究报告
- 2025年企业服务行业企业服务平台市场前景研究报告
- 2025年铁路运输行业智能化铁路建设与发展前景研究报告
- 2025年家电行业智能家居市场需求预测报告
- 2025年工程机械行业工程机械智能化发展研究报告
- 2025年体育产业体育赛事商业运营模式探索研究报告
- 2025年电子商务行业跨境支付与物流服务研究报告
- 2025年杭州上城区总工会公开招聘工会社会工作者9人笔试参考题库附答案解析
- 全国2022年10月自考05744《食品加工与保藏(专)》真题
- 最全面人教版八年级上册英语各单元作文范文汇总
- 赞美诗歌大全下载(赞美诗选下载全集)
- 文化人类学课件完整版
- 碳达峰碳中和产业发展调研报告
- 《海洋学》第二章 地球及海洋概观
- GB/T 12642-2013工业机器人性能规范及其试验方法
- ESG专题研究报告
- 【初中历史】商鞅变法优秀课件31-川教版
- 食品质量与安全管理概述课件
评论
0/150
提交评论