已阅读5页,还剩50页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020/5/15,.,1,7.3几个典型运算符重载,2020/5/15,.,2,7.3几个典型运算符重载,数学类中常用的几个运算重载的特点和应用,6.3几个典型运算符重载,2020/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,10,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,2020/5/15,.,11,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,+n;,通过引用参数操作对象,6.3.1重载+与-,2020/5/15,.,12,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,复制构造局部对象,6.3.1重载+与-,2020/5/15,.,13,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,伪参数,6.3.1重载+与-,2020/5/15,.,14,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,2020/5/15,.,15,7.3.2重载赋值运算符,赋值运算符重载用于对象数据的复制operator=必须重载为成员函数重载函数原型为:类型,6.3.2重载赋值运算符,2020/5/15,.,16,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/5/15,.,17,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,初始化对象时调用复制构造函数,6.3.2重载赋值运算符,2020/5/15,.,18,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,修改对象时调用重载赋值运算符函数,6.3.2重载赋值运算符,2020/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,25,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/5/15,.,26,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/5/15,.,27,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/5/15,.,28,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/5/15,.,29,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/5/15,.,30,7.3.3重载运算符和(),运算符和()是二元运算符和()只能用成员函数重载,不能用友元函数重载,6.3.3重载运算符和(),2020/5/15,.,31,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,6.3.3重载运算符和(),2020/5/15,.,32,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,定义重载函数的类名,6.3.3重载运算符和(),2020/5/15,.,33,1重载下标算符,重载格式类:类型operator类型;,运算符用于访问数据对象的元素,函数返回类型,6.3.3重载运算符和(),2020/5/15,.,34,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,函数名,6.3.3重载运算符和(),2020/5/15,.,35,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,右操作数为符合原语义,用int,6.3.3重载运算符和(),2020/5/15,.,36,1重载下标算符,重载格式类:类型operator()类型;,运算符用于访问数据对象的元素,例设x是类X的一个对象,则表达式xy可被解释为x.operator(y),显式声明一个参数,6.3.3重载运算符和(),2020/5/15,.,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/5/15,.,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/5/15,.,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/5/15,.,41,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,6.3.4重载流插入和流提取运算符,2020/5/15,.,42,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,重载几个运算符,6.3.4重载流插入和流提取运算符,2020/5/15,.,43,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,标准流类,6.3.4重载流插入和流提取运算符,2020/5/15,.,44,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用预定义版本,6.3.4重载流插入和流提取运算符,2020/5/15,.,45,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cin.operator(A),6.3.4重载流插入和流提取运算符,2020/5/15,.,46,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cout.operator(A),6.3.4重载流插入和流提取运算符,2020/5/15,.,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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 精准植保无人机研发技术创新总结报告
- 2026年护考真题及答案
- 住宅楼填充墙砌筑施工方案
- 地铁车站基坑开挖施工方案
- 钢构件制作专项施工方案
- 文创产品设计方案
- 规范门窗安装施工方案
- 消防应急预案专项施工方案
- 2026新华三面试题及答案
- 2026信宜教师面试题目及答案
- 2025内蒙古森工集团招聘工勤技能人员3100人笔试参考题库附带答案详解析集合
- DB32/T 4181-2021行政执法案卷制作及评查规范
- NB/T 11646-2024井工煤矿采空区自然发火监测预警技术规范
- DB42T-湖北省房屋和市政工程造价数据采集规范
- 《PLC应用项目工单实践教程》课件 模块8 S7-1500系列PLC模拟量的应用
- 安全员B证考试题库及答案【含各题型、历年真题、题库大全】
- 处方调配人员岗位职责
- 水电工程分包合同协议
- 加强道德与合规意识的提升措施计划
- GB 30530-2024二甲基硅氧烷单位产品能源消耗限额
- 妇科手术快速康复治疗
评论
0/150
提交评论