几个典型运算符重载(C++)(四)ppt课件_第1页
几个典型运算符重载(C++)(四)ppt课件_第2页
几个典型运算符重载(C++)(四)ppt课件_第3页
几个典型运算符重载(C++)(四)ppt课件_第4页
几个典型运算符重载(C++)(四)ppt课件_第5页
已阅读5页,还剩50页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020/6/8,.,1,7.3几个典型运算符重载,2020/6/8,.,2,7.3几个典型运算符重载,数学类中常用的几个运算重载的特点和应用,6.3几个典型运算符重载,2020/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,10,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,2020/6/8,.,11,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,+n;,通过引用参数操作对象,6.3.1重载+与-,2020/6/8,.,12,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,复制构造局部对象,6.3.1重载+与-,2020/6/8,.,13,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,friendIncreaseoperator+(Increase,Increaseoperator+(Increase,n+;,伪参数,6.3.1重载+与-,2020/6/8,.,14,友员函数重载+,#includeclassIncreasepublic:Increase()value=0;voiddisplay()constcoutvaluen;friendIncreaseoperator+(Increase,6.3.1重载+与-,2020/6/8,.,15,7.3.2重载赋值运算符,赋值运算符重载用于对象数据的复制operator=必须重载为成员函数重载函数原型为:类型,6.3.2重载赋值运算符,2020/6/8,.,16,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/6/8,.,17,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,初始化对象时调用复制构造函数,6.3.2重载赋值运算符,2020/6/8,.,18,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,修改对象时调用重载赋值运算符函数,6.3.2重载赋值运算符,2020/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,25,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/6/8,.,26,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/6/8,.,27,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/6/8,.,28,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/6/8,.,29,#include#includeclassNamepublic:Name(char*pN);Name(constName/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2重载赋值运算符,2020/6/8,.,30,7.3.3重载运算符和(),运算符和()是二元运算符和()只能用成员函数重载,不能用友元函数重载,6.3.3重载运算符和(),2020/6/8,.,31,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,6.3.3重载运算符和(),2020/6/8,.,32,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,定义重载函数的类名,6.3.3重载运算符和(),2020/6/8,.,33,1重载下标算符,重载格式类:类型operator类型;,运算符用于访问数据对象的元素,函数返回类型,6.3.3重载运算符和(),2020/6/8,.,34,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,函数名,6.3.3重载运算符和(),2020/6/8,.,35,1重载下标算符,重载格式类:类型operator(类型);,运算符用于访问数据对象的元素,右操作数为符合原语义,用int,6.3.3重载运算符和(),2020/6/8,.,36,1重载下标算符,重载格式类:类型operator()类型;,运算符用于访问数据对象的元素,例设x是类X的一个对象,则表达式xy可被解释为x.operator(y),显式声明一个参数,6.3.3重载运算符和(),2020/6/8,.,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/6/8,.,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/6/8,.,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/6/8,.,41,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,6.3.4重载流插入和流提取运算符,2020/6/8,.,42,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,重载几个运算符,6.3.4重载流插入和流提取运算符,2020/6/8,.,43,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,标准流类,6.3.4重载流插入和流提取运算符,2020/6/8,.,44,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用预定义版本,6.3.4重载流插入和流提取运算符,2020/6/8,.,45,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cin.operator(A),6.3.4重载流插入和流提取运算符,2020/6/8,.,46,#include#includeclassvectorpublic:vector(intsize=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cout.operator(A),6.3.4重载流插入和流提取运算符,2020/6/8,.,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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论