欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    几个典型运算符重载C++四.ppt

    • 资源ID:6407102       资源大小:423.50KB        全文页数:55页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    几个典型运算符重载C++四.ppt

    2023/10/27,1,7.3 几个典型运算符重载,2023/10/27,2,7.3 几个典型运算符重载,数学类中常用的几个运算重载的特点和应用,6.3 几个典型运算符重载,2023/10/27,3,7.3.1 重载+与-,设A Aobject;运算符+和-有两种方式:前置方式:+Aobject-Aobject,后置方式:Aobject+Aobject-,成员函数 重载A:A operator+();解释为:Aobject.operator+();友员函数 重载friend A operator+(A,成员函数 重载A:A operator+(int);解释为:Aobject.operator+(0);友员函数 重载:friend A operator+(A 解释为:operator+(Aobject,0),伪参数,6.3.1 重载+与-,2023/10/27,4,成员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;Increase operator+();/前置 Increase operator+(int);/后置 private:unsigned value;Increase Increase:operator+()value+;return*this;Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;void main()Increase a,b,n;for(int i=0;i 10;i+)a=n+;cout n=;n.display();cout a=;a.display();for(i=0;i 10;i+)b=+n;cout n=;n.display();cout b=;b.display();,6.3.1 重载+与-,2023/10/27,5,成员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;Increase operator+();/前置 Increase operator+(int);/后置 private:unsigned value;Increase Increase:operator+()value+;return*this;Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;void main()Increase a,b,n;for(int i=0;i 10;i+)a=n+;cout n=;n.display();cout a=;a.display();for(i=0;i 10;i+)b=+n;cout n=;n.display();cout b=;b.display();,Increase operator+();,Increase Increase:operator+()value+;return*this;,+n;,预定义版本,6.3.1 重载+与-,2023/10/27,6,成员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;Increase operator+();/前置 Increase operator+(int);/后置 private:unsigned value;Increase Increase:operator+()value+;return*this;Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;void main()Increase a,b,n;for(int i=0;i 10;i+)a=n+;cout n=;n.display();cout a=;a.display();for(i=0;i 10;i+)b=+n;cout n=;n.display();cout b=;b.display();,Increase operator+();,Increase Increase:operator+()value+;return*this;,+n;,重载版本,6.3.1 重载+与-,2023/10/27,7,成员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;Increase operator+();/前置 Increase operator+(int);/后置 private:unsigned value;Increase Increase:operator+()value+;return*this;Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;void main()Increase a,b,n;for(int i=0;i 10;i+)a=n+;cout n=;n.display();cout a=;a.display();for(i=0;i 10;i+)b=+n;cout n=;n.display();cout b=;b.display();,Increase operator+(int);,Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;,n+;,预定义版本,6.3.1 重载+与-,2023/10/27,8,成员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;Increase operator+();/前置 Increase operator+(int);/后置 private:unsigned value;Increase Increase:operator+()value+;return*this;Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;void main()Increase a,b,n;for(int i=0;i 10;i+)a=n+;cout n=;n.display();cout a=;a.display();for(i=0;i 10;i+)b=+n;cout n=;n.display();cout b=;b.display();,Increase operator+(int);,Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;,n+;,重载版本,6.3.1 重载+与-,2023/10/27,9,成员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;Increase operator+();/前置 Increase operator+(int);/后置 private:unsigned value;Increase Increase:operator+()value+;return*this;Increase Increase:operator+(int)Increase temp;temp.value=value+;return temp;void main()Increase a,b,n;for(int i=0;i 10;i+)a=n+;cout n=;n.display();cout a=;a.display();for(i=0;i 10;i+)b=+n;cout n=;n.display();cout b=;b.display();,6.3.1 重载+与-,2023/10/27,10,友员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;friend Increase operator+(Increase,6.3.1 重载+与-,2023/10/27,11,友员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;friend Increase operator+(Increase,friend Increase operator+(Increase,Increase operator+(Increase,+n;,通过引用参数操作对象,6.3.1 重载+与-,2023/10/27,12,友员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;friend Increase operator+(Increase,friend Increase operator+(Increase,Increase operator+(Increase,n+;,复制构造局部对象,6.3.1 重载+与-,2023/10/27,13,友员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;friend Increase operator+(Increase,friend Increase operator+(Increase,Increase operator+(Increase,n+;,伪参数,6.3.1 重载+与-,2023/10/27,14,友员函数重载+,#includeclass Increase public:Increase()value=0;void display()const coutvaluen;friend Increase operator+(Increase,6.3.1 重载+与-,2023/10/27,15,7.3.2 重载赋值运算符,赋值运算符重载用于对象数据的复制 operator=必须重载为成员函数 重载函数原型为:类型,6.3.2 重载赋值运算符,2023/10/27,16,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2 重载赋值运算符,2023/10/27,17,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,初始化对象时调用复制构造函数,6.3.2 重载赋值运算符,2023/10/27,18,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,修改对象时调用重载赋值运算符函数,6.3.2 重载赋值运算符,2023/10/27,19,定义Name类的重载赋值函数,Name:Name(char*pN)cout Constructing pN endl;pName=new char strlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(const Name,Name,6.3.2 重载赋值运算符,2023/10/27,20,Name:Name(char*pN)cout Constructing pN endl;pName=new char strlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(const Name,定义Name类的重载赋值函数,Name,6.3.2 重载赋值运算符,2023/10/27,21,Name:Name(char*pN)cout Constructing pN endl;pName=new char strlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(const Name,定义Name类的重载赋值函数,Name,6.3.2 重载赋值运算符,2023/10/27,22,Name:Name(char*pN)cout Constructing pN endl;pName=new char strlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(const Name,定义Name类的重载赋值函数,Name,LiHai,6.3.2 重载赋值运算符,2023/10/27,23,Name:Name(char*pN)cout Constructing pN endl;pName=new char strlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(const Name,定义Name类的重载赋值函数,Name,LiHai,6,6.3.2 重载赋值运算符,2023/10/27,24,Name:Name(char*pN)cout Constructing pN endl;pName=new char strlen(pN)+1;if(pName!=0)strcpy(pName,pN);size=strlen(pN);Name:Name(const Name,定义Name类的重载赋值函数,Name,LiHai,6.3.2 重载赋值运算符,2023/10/27,25,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2 重载赋值运算符,2023/10/27,26,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2 重载赋值运算符,2023/10/27,27,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2 重载赋值运算符,2023/10/27,28,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2 重载赋值运算符,2023/10/27,29,#include#includeclass Name public:Name(char*pN);Name(const Name/调用重载赋值算符函数,定义Name类的重载赋值函数,6.3.2 重载赋值运算符,2023/10/27,30,7.3.3 重载运算符和(),运算符 和()是二元运算符 和()只能用成员函数重载,不能用友元函数重载,6.3.3 重载运算符和(),2023/10/27,31,1重载下标算符,重载格式类:类型 operator(类型);,运算符用于访问数据对象的元素,6.3.3 重载运算符和(),2023/10/27,32,1重载下标算符,重载格式类:类型 operator(类型);,运算符用于访问数据对象的元素,定义重载函数的类名,6.3.3 重载运算符和(),2023/10/27,33,1重载下标算符,重载格式类:类型 operator 类型;,运算符用于访问数据对象的元素,函数返回类型,6.3.3 重载运算符和(),2023/10/27,34,1重载下标算符,重载格式类:类型 operator(类型);,运算符用于访问数据对象的元素,函数名,6.3.3 重载运算符和(),2023/10/27,35,1重载下标算符,重载格式类:类型 operator(类型);,运算符用于访问数据对象的元素,右操作数为符合原语义,用 int,6.3.3 重载运算符和(),2023/10/27,36,1重载下标算符,重载格式类:类型 operator()类型;,运算符用于访问数据对象的元素,例 设 x 是类 X 的一个对象,则表达式x y 可被解释为x.operator(y),显式声明一个参数,6.3.3 重载运算符和(),2023/10/27,37,2重载函数调用符(),/用重载()算符实现数学函数的抽象#include class F public:double operator()(double x,double y);double F:operator()(double x,double y)return x*x+y*y;void main()F f;cout f(5.2,2.5)endl;,6.3.3 重载运算符和(),2023/10/27,38,2重载函数调用符(),/用重载()算符实现数学函数的抽象#include class F public:double operator()(double x,double y);double F:operator()(double x,double y)return x*x+y*y;void main()F f;cout f(5.2,2.5)endl;,f.operator()(5.2,2.5),6.3.3 重载运算符和(),2023/10/27,39,2重载函数调用符(),/用重载()算符实现数学函数的抽象#include class F public:double operator()(double x,double y);double F:operator()(double x,double y)return x*x+y*y;void main()F f;cout f(5.2,2.5)endl;,memFun,memFun,f.memFun(5.2,2.5),比较定义普通成员函数,6.3.3 重载运算符和(),2023/10/27,40,istream 和 ostream 是 C+的预定义流类cin 是 istream 的对象,cout 是 ostream 的对象运算符 由 istream 重载为提取操作,用于输入基本类型数据程序员重载,用于输出和输入用户自定义的数据类型,7.3.4 重载流插入和流提取运算符,6.3.4 重载流插入和流提取运算符,2023/10/27,41,#include#includeclass vector public:vector(int size=1);vector();int,为vector类重载流插入运算符和提取运算符,6.3.4 重载流插入和流提取运算符,2023/10/27,42,#include#includeclass vector public:vector(int size=1);vector();int,为vector类重载流插入运算符和提取运算符,重载几个运算符,6.3.4 重载流插入和流提取运算符,2023/10/27,43,#include#includeclass vector public:vector(int size=1);vector();int,为vector类重载流插入运算符和提取运算符,标准流类,6.3.4 重载流插入和流提取运算符,2023/10/27,44,#include#includeclass vector public:vector(int size=1);vector();int,为vector类重载流插入运算符和提取运算符,使用预定义版本,6.3.4 重载流插入和流提取运算符,2023/10/27,45,#include#includeclass vector public:vector(int size=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cin.operator(A),6.3.4 重载流插入和流提取运算符,2023/10/27,46,#include#includeclass vector public:vector(int size=1);vector();int,为vector类重载流插入运算符和提取运算符,使用重载版本cout.operator(A),6.3.4 重载流插入和流提取运算符,2023/10/27,47,vector:vector(int size)if(size 100)cout=0,为vector类重载流插入运算符和提取运算符,6.3.4 重载流插入和流提取运算符,2023/10/27,48,vector:vector(int size)if(size 100)cout=0,为vector类重载流插入运算符和提取运算符,使用重载版本访问对象元素,6.3.4 重载流插入和流提取运算符,2023/10/27,49,vector:vector(int size)if(size 100)cout=0,为vector类重载流插入运算符和提取运算符,cout 的别名,6.3.4 重载流插入和流提取运算符,2023/10/27,50,vector:vector(int size)if(size 100)cout=0,为vector类重载流插入运算符和提取运算符,cin 的别名,6.3.4 重载流插入和流提取运算符,2023/10/27,51,vector:vector(int size)if(size 100)cout=0,为vector类重载流插入运算符和提取运算符,返回流类引用以符合原语义,6.3.4 重载流插入和流提取运算符,2023/10/27,52,vector:vector(int size)if(size 100)cout=0,为vector类重载流插入运算符和提取运算符,6.3.4 重载流插入和流提取运算符,2023/10/27,53,运算符重载可以像基本数据类型一样,用简洁明确的运算符操作自定义的类对象。重载运算符函数可以对运算符作出新的解释,但重原有的基本语义不变。运算符函数既可以重载为成员函数,也可以重载义为友员函数或普通函数。当一元运算符的操作数,或者二元运算符的左操作数是该类的一个对象时,以成员函数重载;当一个运算符的操作需要修改类对象状态时,应该以成员函数重载。如果以成友员函数重载,可以使用引用参数修改对象。当运算符的操作数(尤其是第一个操作数)希望有隐式转换,则重载算符时必须用友员函数。构造函数和类型转换函数可以实现基本类型与类类型,以及类类型之间的类型转换。,小结,2023/10/27,54,7.4 类类型转换 此节不介绍按统一规定进行。有时间可以进行实验讲述。,2023/10/27,55,作业:,7.1 选择题 P282 57.2 阅读程序,写出结果 P283 27.3 思考题 P284 17.4 编程题 P284 4,

    注意事项

    本文(几个典型运算符重载C++四.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开