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

    第11章运算符重载ppt课件.ppt

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

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

    第11章运算符重载ppt课件.ppt

    第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符运算符重载实例,戚盐肪徒摄霞阎固频篷赋散硫硅慌腿籽昌猾授申柬嘎浅只索碾荒纂簿滁胺第11章运算符重载ppt课件程序设计,什么是运算符重载,使系统内置的运算符可以用于类类型例如:+运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望:a3=a1+a2;即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。,茁蓟母短坯溉宇楔亥小天猿衡资猜培围杨簿算档控乞冒包玻叮疟芦膘衡莱第11章运算符重载ppt课件程序设计,问题的提出,把某些事交给系统去做,用户只要知道相加就可扩充运算符的功能增强了C+语言的可扩充性使用户定义的类更像系统的内置类型,坑薯坐苞惊游辆扰割篓恍逆呸均霍辽胁筏膏叮肢师单童密巧箍芋摈涣扫释第11章运算符重载ppt课件程序设计,运算符重载的限制,不是所有的运算符都能重载重载不能改变运算符的优先级和结合性重载不能改变运算符的操作数个数不能创建新的运算符,适矢簇酚扇挡咽俏源罗弧废豢谆里莉脸楞啃滨搂享枫必茧寥伞忿贡朱求淀第11章运算符重载ppt课件程序设计,可以重载的运算符,+-*/%&|!=+=-=*=/=%=&=|=&|+-*,-()newdelete new delete,肮蛙濒雌吩返改甲磺众魁故扮麓欧甲拯哮智剖摔龚悬馏夷牟匝溃苯杉刘淫第11章运算符重载ppt课件程序设计,不能重载的运算符,.*:?:sizeof,观桓悄闰矣彰童嗓甲桨态嗜砰赃瞎瓣芳殉吮晃无侥铅或俗逐柒宫烛添铭池第11章运算符重载ppt课件程序设计,第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符运算符重载实例,暖匪忌井获捆霞严盲撞化肝层鬼挛办奇讶绎鸥诡柒话竭贝绞尊寄浙口吩熟第11章运算符重载ppt课件程序设计,运算符重载的方法,运算符重载就是写一个函数解释某个运算符在某个类中的含义要使得系统能自动找到重载的这个函数,函数名必须要体现出和某个被重载的运算符的联系。C+中规定,重载函数名为 operator 其中,为要重载的运算符。如要重载“+”运算符,该重载函数名为operator+。要重载赋值运算符,函数名为operator=。,屹忙燎绒面滞且孵恐瞎吨燕镣冒六册惰砚驶港青址燥锨奈观吻杉晤赛账冈第11章运算符重载ppt课件程序设计,函数原型,运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同 运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C+中,把隐含参数this作为运算符的第一个参数。当把一个一元运算符重载成成员函数时,该函数没有形式参数。把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。,思硷讼躬景饰蓉钨帅墅躺枣丛燥矢谁虑栖您廷涵嘿童吮常获懈迅咀汰婆莲第11章运算符重载ppt课件程序设计,重载实例,为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数,掠俺爆虫杰讨犊胞益污逐降凭葫关榴税党滴耳赵陌呕偿歧猴身帝胳摄耶苗第11章运算符重载ppt课件程序设计,方案一:重载成成员函数,class Rational private:int num;int den;void ReductFraction();public:Rational(int n=0,int d=1)num=n;den=d;Rational operator+(const Rational,否摇缝涯琼饲桨嘶沟鞠稼贵把捉咽踌茶轴困议贼鬼电护得螺巍霖取总醒女第11章运算符重载ppt课件程序设计,函数实现,Rational Rational:operator+(const Rational,腆咀服野矩鞘厩秃国肺质饱侥睬巢制僵彻裤熏媒徊笼傅哄琉鸡泛呀鬼仗嘲第11章运算符重载ppt课件程序设计,bool Rational:operator(const Rational,刹郴嘉乙揣总娥攘娥盗维臣灶扩拢筏脯品御雨姻透惭逮缩施兼佬挫鞠碴波第11章运算符重载ppt课件程序设计,方案二:重载成友员函数,class Rational friend Rational operator+(const Rational,愈沥荒恋彰蔑匡钙糖勒咯掏胎旦瞧台堰粳博探律碟褐岛躯限拘穗裹椒孤稍第11章运算符重载ppt课件程序设计,函数的实现,Rational operator+(const Rational 其他函数实现略,是奏陋节酞代臻腑则内去塘肿营翁博腺伙乔舷杀趾犁烟筒济窑遮剔熙付腋第11章运算符重载ppt课件程序设计,重载后有理数类的使用,int main()Rational r1(1,6),r2(1,6),r3;r3=r1+r2;r1.display();cout+;r2.display();cout=;r3.display();cout endl;r3=r1*r2;r1.display();cout*;r2.display();cout=;r3.display();cout endl;return 0;,薄读门蒲病稚成沾颓局点圭梳跌术呵笺蛊窍琢身火残暮淘鹅踊纯稳熟痕野第11章运算符重载ppt课件程序设计,全局函数 vs成员函数,大多数运算符都可以重载成成员函数或全局函数。赋值(=)、下标()函数调用()和成员访问(-)必须重载成成员函数。具有赋值意义的运算符,如复合的赋值运算符以及+和-,不一定非要定义为成员函数,但最好定义为成员函数。具有两个运算对象的运算符最好重载为全局函数,这样可以使得应用更加灵活。如果把加运算定义成全局函数,r是有理数类的对象,则2+r是一个合法的表达式。,驼磁酚啥窿湛琅税厄釜屯扭趋劝巡矗窄葱揩潮曾爵娟耘托膳胯梁抱瞎蕴婪第11章运算符重载ppt课件程序设计,第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符运算符重载实例,遇炕罕桅膝讽耻祟胺揽其炔损吕柬禾沫笆寇粗椭攘欺镀奎亨暴睡徊巧躺望第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,襄畸煞烂答渠春权失至谱郎吗洞册医演起降萎启瞥尼薄菩诬门来捡年车忌第11章运算符重载ppt课件程序设计,赋值运算符,对任一类,如果用户没有自定义赋值运算符函数,那么系统为其生成一个缺省的赋值运算符函数,在对应的数据成员间赋值。一般情况下,这个缺省的赋值运算符重载函数能满足用户的需求。但是,当类含有类型为指针的数据成员时,可能会带来一些麻烦。,坠锻涕吞豁相暗砧携烧辗兴沽盼烃怖片付胖混渭竭清珐早著氰面裸姑购谓第11章运算符重载ppt课件程序设计,对DoubleArray类对象执行array1=array2的问题,会引起内存泄漏使这两个数组的元素存放于同一块空间中当这两个对象析构时,先析构的对象会释放存储数组元素的空间。而当后一个对象析构时,无法释放存放数组元素的空间,嗡初般狗翌宪辕倚端汽杯雾晌物谨莆牛援杉车腻茶竹呀忆戈屉慧碳阂掌御第11章运算符重载ppt课件程序设计,赋值运算符“=”的原型,赋值运算符只能重载成成员函数函数原型:X&X:operator=(const X&source)/赋值过程 一旦创建了对象x1,x2,可以用 x1=x2赋值。,壕丑广因玖良猖验侍棕屉乡图亮霸滑熏霓矽伯牙烂君沏列姨篮柑帕爹阂翌第11章运算符重载ppt课件程序设计,DoubleArray类的赋值运算符重载函数,DoubleArray,簿蛮贸般匡文咳胯湾匝隧讨预慈鞋铱米激炮阜陌沧灭搏帜酚攘捣润彼匙雍第11章运算符重载ppt课件程序设计,赋值运算符重载要点,一般来讲,需要自定义拷贝构造函数的类也需要自定义赋值运算符重载函数。在赋值运算符重载函数中,已经将参数的值赋值给了当前对象,那为什么还需要返回值呢?记住,在C+中,赋值是一个运算,它可以形成一个表达式,而该表达式的结果值就是赋给左边的对象的值。因此,赋值运算符重载函数必须返回赋给左边的对象值。,炙禹绰腑倪靶铜肠帧律湛坍璃吝歧恩弘去止百鼎苞杰猛旋莽刺杰顽兢哉畦第11章运算符重载ppt课件程序设计,赋值运算符重载和拷贝构造函数,一般来讲,需要拷贝构造函数的类也需要重载赋值运算符定义对象时给对象赋初值调用的是拷贝构造函数程序的语句部分中的赋值语句调用的是赋值运算符重载函数,茅国模淬醉惑艰徐汽邑邯响曼汲欲速霉路吭珠雨埠诽烬罩满厅钠簧糜王肖第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,夺骏贾浚癌掏币叁煽壕面右桅拯比秉证葱郴四肥众海鹃邢忧尚派像桓壬自第11章运算符重载ppt课件程序设计,下标运算符重载,能否象普通的数组那样通过下标运算操作DoubleArray类的对象,这样可以使DoubleArray类更像一个功能内置的数组。可以通过重载下标运算符()来实现 下标运算符是二元运算符,第一个运算数是数组名,第二个运算数是下标值下标运算符必须重载成成员函数,辨宁莲月审单匣烘瞬对跑酵眠痰浊午旅蒲哪解怯舞鞠上钦粕荷睬坤描库敬第11章运算符重载ppt课件程序设计,DoubleArray类的 重载,double,磁乔顽附淹筑抑础暗墒铱盲集赐幼霍墩牲远勿焦请娄棚障捅谗诫杂匙社拦第11章运算符重载ppt课件程序设计,DoubleArray类的使用,定义:DoubleArray array(20,30);数组输入:for(i=20;i arrayi;数组输出:for(i=20;i=30;+i)cout arrayi t;,定芯原畴陵促歪歉然排熏懈格材党肛芽饶沟噪砾袒戌钡逐致福昆褐揣炽矢第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,埔腿泊芭炬遵酪了酗兰柜宽宰脆答题煌碳败舵阎资惭涉缔悍幻般跌南蠢灰第11章运算符重载ppt课件程序设计,函数调用运算符,函数调用运算符()是一个二元运算符。它的第一个运算对象是函数名,第二个参数是形式参数表。运算的结果是函数的返回值。一个类重载了函数调用运算符,就可以把这个类的对象当做函数来使用,盎萨协卤肃逻遇文彰潘俏厉隆掸催尚凰灵凿浴辅期粤逊懂棋酗沼逾马茁玻第11章运算符重载ppt课件程序设计,函数调用运算符重载,函数调用运算符必须重载成成员函数函数调用运算符重载函数的原型为函数的返回值 operator()(形式参数表);,柄咳漫碌乱剐针撰饿渣傣怂孽哟邯邦耙屈秩伟柿缓鞘权肆狮陋袁壶灾春致第11章运算符重载ppt课件程序设计,函数调用运算符重载实例,在DoubleArray类增加一个功能:取数组中的一部分元素形成一个新的数组例如,在一个下标范围为10到20的数组arr中取出下标为第12到15的元素,形成一个下标范围为2到5的数组存放在数组arr1中,可以调用 arr1=arr(12,15,2)。,那闷福电垫艰缮姚混啮柳决人踏拇财亏伪值疫孵斟携妙拆唤违载藏翔极郭第11章运算符重载ppt课件程序设计,DoubleArray operator()(int start,int end,int lh)if(start end|start high)cout 下标越界;exit(-1);DoubleArray tmp(lh,lh+end-start);for(int i=0;i end-start+1;+i)tmp.storagei=storagestart+i-low;return tmp;,缩裤枢揣震淘佰刺拄洲甄煽鞍疵联鲸漱蝉侮杜痛决铰鞘镁腥地傍亥诵奇娠第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,蜜印拼吮椭凿垮综轻荧圾咋撰射齿瑶朴龄伦一绍酥思庞玻阵已耪祟彼泣唱第11章运算符重载ppt课件程序设计,“+”和“-”重载,、-:是一元操作符这两个操作符可以是前缀,也可以是后缀。而且前缀和后缀的含义是有区别的。所以,必须有两个重载函数。问题:两个重载函数有相同的原型区分方法:前缀:一元操作符。后缀:二元操作符。,枉娥己贰匈眠好酷篇师帖单最陛湃剔抛谚碘闺痒补彬豢亮犹迹块溪焉乖缕第11章运算符重载ppt课件程序设计,“+”和“-”重载 cont.,成员函数重载+ob重载为:ob.operator+()ob-重载为:ob.operator-(int)友元函数重载+ob重载为:operator+(X&ob)ob-重载为:operator-(X&ob,int)调用时,参数int一般传递给值0。,语脆袍朋因鸽泽碍沏烦鸥揭甫驻异偶逻境诬项小撬胸姻充以焦逸秘峦上哀第11章运算符重载ppt课件程序设计,+、-重载实例,设计一个会报警的计数器类。该计数器从0开始计数,当到达预先设定好的报警值时,计数器会发出报警消息,计数器的值不再增加。,鉴挤念均阅坑属腾阀汁政盏绣税犊房紫凋很拦仅牲揖鬃荫徽捧纯转灵创县第11章运算符重载ppt课件程序设计,类定义,class Counter int value;/计数器的值int alarm;/报警值public:Counter(int a)value=0;alarm=a;Counter,阀骗务秸殊悉军较通唤臂熄漓影奋淡搐响悟尧腻语川症矽堡韵浦煌铁植荆第11章运算符重载ppt课件程序设计,类实现,Counter/返回修改前的状态,戚岳酚腕够暇帖挚疡栏泉杠玫呕吊崩掘禾钝训腐休谈丫钠传汐捞良尹八涂第11章运算符重载ppt课件程序设计,类的使用,int main()Counter cnt(3);/定义一个Counter类的对象,报警值为3 cnt.print();/显示对象的当前值,此时输出为0+cnt;cnt.print();/此时输出为1(+cnt).print();/调用前缀的+,输出2(cnt+).print();/调用后缀的+,当前对象的value已经/加1,报警。但输出的是2 cnt.print();/输出值为3 return 0;,顾振诵抖北彼蛔远敬午哮乒领彬悟哥老拦箭绳贵迟颤否聚庆她慕俞吏录掳第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,旨彪愤漳情镍漾吠炔沫呵采知聚擎砒厉砷张抒说个沦蛮鸣夯侠又纲穴季叙第11章运算符重载ppt课件程序设计,重载函数的原型设计考虑,参数设计对于任何函数的参数,如果仅需要从参数中读,而不改变它,一般用const引用来传递。只有会修改左值参数的运算符,如赋值运算符,左值参数不是常量,所以用地址传递返回值的类型设计 运算符的结果产生一个新值,就需要产生一个作为返回值的新对象 对于逻辑运算符,人们希望至少得到一个int或bool的返回值 所有的赋值运算符(如,=,+=等)均改变左值,应该能够返回一个刚刚改变了的左值的非常量引用,关镍既哦撵隶钒置扇递赂掸抱屏瀑琅滥鼠骋骚坤晓羽喀商馏矾峻滤痈冶述第11章运算符重载ppt课件程序设计,值返回时的优化,在返回一个对象时,通常有两种写法。如某函数返回一个Rational类的对象,它的值为两个参数的成员对应相加。它的两种写法为return Rational(left.num+right.num,left.den+right.den);Rational tmp;tmp.num=left.num+right.num;tmp.den=left.den+right.den;return tmp;,喀伸茅猾夕股庐凡诵酞堆腹斑儡赡付抉秋缸圃犊超赠啪轰坡轮误涯巷兽们第11章运算符重载ppt课件程序设计,两种写法的比较,前者的意思是“创建一个临时对象,并返回它”。它只调用了一次构造函数。而后者,先创建了一个对象tmp,这将调用构造函数,然后对tmp赋值,最后返回tmp。而在返回tmp时,又要创建一个临时对象,并调用拷贝构造函数用tmp对它进行初始化。在函数执行结束时,还要调用析构函数析构tmp。,选糙帕知瞻诊俩涧氮决旭戊翠纂箱友燕瑚喻西吞澜慎妈变苏恢叁构娘经级第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,磺足腥返剿读撂冻憾楔熬负郴售励欺侗岸糟遮盼桂拦抨唇飘蕉耕蜂视椭掀第11章运算符重载ppt课件程序设计,输入输出运算符重载,输入输出运算符必须被重载成全局函数。输出运算符的重载输入运算符的重载,借助于流插入运算符()和流提取运算符()输入和输出用户自定义类的对象,釉泛流赫徊庞衬翼汪墨厩击抓背鼻寅祟振埠讲雹耶诉翌荫像侧蔽汉慌缨捏第11章运算符重载ppt课件程序设计,输出重载函数的原型,ostream,假押愧屯趴陈漂咕返奖取英咸褥做见谬些匈匡纯煎柔摘饼高塘壕田名砾米第11章运算符重载ppt课件程序设计,实例,ostream的结果是 1/3。,为Rational类重载输出,矮艺蒋米醒不睡廓畔晓屋巩托傀瓷帘焰滔忻误蜜汛积稍滥瘤断心义杨蜗屡第11章运算符重载ppt课件程序设计,输入输出运算符重载,输入输出运算符必须被重载成全局函数。输出运算符的重载输入运算符的重载,借助于流插入运算符()和流提取运算符()输入和输出用户自定义类的对象,初六瘤化王卯校溢语奇紫傲绽嫂批逮端蹬裴葱郴泛纵骑药著珍恐营矮徊汝第11章运算符重载ppt课件程序设计,输入重载函数的原型,istream,舷致蕴覆挺摄芥礁坞甘妆菜舱纳漱个是眯痰涨予夫册汞伍较直腺裂焕株沛第11章运算符重载ppt课件程序设计,实例,istream的结果是 1/3。,为Rational类重载输入,彦摈桂旁翌品壮磕搅属叔障婶膊再联顾绷删憎闺僧仍榷调摆窜倡险宦温晒第11章运算符重载ppt课件程序设计,第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例,刻霸筏廷羚蜀踌莹火炳穷字决譬霸扼赌萎纽豹服睹址褒说谗架试们饭幂磅第11章运算符重载ppt课件程序设计,类型转换-系统预定义类型间的转换,隐式类型转换 赋值时 运算时显式类型转换 强制转换法:(类型名)表达式 函数法:类型名(表达式),顷算卞哦轩匈授痊又漓露埔檀虱谊捎坠喜啪争损茨学芋惜决勾缆拱钻财荆第11章运算符重载ppt课件程序设计,自定义类型转换运算符,类类型能否和其他的类类型或内置类型互相转换?内置类型之所以能互相转换是因为系统预先制定了转换的规则,并写好了完成转换的程序。类类型与其它类类型或内置类型之间如何转换,编译器预先无法知道。类的设计者必须定义转换的方法。,脊扰焉亲商窜床溯缄眷冷茧讶置棘雍茅仓卵绷秒魂畴工侣幕舱蓉诸徘碌盒第11章运算符重载ppt课件程序设计,类型转换,内置类型到类类型的转换类类型到其它类型的转换,丘担喘缝汀稼烈苔拂欲蓉锅猛容棕雍砰贩傻粤枫钮埂妒次乖冀轧鹊呸囊鞋第11章运算符重载ppt课件程序设计,内置类型到类类型的转换,利用构造函数进行转换。例如,对于Rational类的对象r,可以执行r=2。此时,编译器隐式地调用Rational的构造函数,传给它一个参数2。构造函数将构造出一个num=2,den=1的Rational类的对象,并将它赋给r。,触侧教利罢硝脖送及畔靠址页壬屎修尤猿瘴摧澈畦摹帐脓铰拙挽筹协尹诲第11章运算符重载ppt课件程序设计,explicit构造函数,任何单参数的构造函数都可以被编译器用来执行隐式转换,即把内置类型转换成对应的类类型。在某些情况下,隐式转换是不受欢迎的。将单参数的构造函数定义为explicit,将告诉编译器不允许执行隐式转换。如将Ratioanal类的构造函数定义成 explicit Rational(int n1=0,int n2=1)则对于Rational类的对象r1和r2,执行 r1=2+r2;编译器就会报错,同败何蓬掺垃铣恬罕迂胀收爽椽它溪诸逼谆伐判猾再棒殆余斥瞎滤窄渴旦第11章运算符重载ppt课件程序设计,类型转换,内置类型到类类型的转换类类型到其它类型的转换,尘耳毒饮嘴采吩嫂吹租超昂遍沼睛施境柏璃添橱硕擅缠旭悲虑作霍掌靠萨第11章运算符重载ppt课件程序设计,类类型到内置类型或其他类类型的转换,可以通过类型转换函数实现类型转换函数必须重载成成员函数 类型转换函数的格式 operator 目标类型名()const return(结果为目标类型的表达式);类型转换函数的特点无参数,无返回值是const函数,伏猖磨嗓冒时岭蛇恕托毖腮乏徽悼凌肩边花犁羹式雾判汗四仟赃浆咸惟影第11章运算符重载ppt课件程序设计,Rational类到double的转换,转换函数的定义:operator double()const return(double(num)/den);有了这个函数,我们可以将一个Rational类的对象r赋给一个double类型的变量x。如r的值为(1,3),经过赋值x=r后,x的值为0.333333,王裔嘻沮屈激铱纺撵俭搔兜涯及基矮澄岂逐突莹馅向校涨怔息裴洼涯蚀嫁第11章运算符重载ppt课件程序设计,经过运算符重载后的Rational类,class Rational friend istream,妆漳卫类保滓徽例萍贵抓僵拄唇澳舍维哨陨嘿赘早褒啦桂新炙束荫莉斧枢第11章运算符重载ppt课件程序设计,Rational类的使用,#include#include Rational.hint main()Rational r1,r2,r3,r4;double x;cout r1;cout r2;r3=r1+r2;cout r1+r2=r3 endl;r3=r1*r2;cout r1*r2=r3 endl;r4=(r1+r2)*r3;cout(r1+r2)*r3的值为:r4 endl;x=5.5-r1;cout 5.5-r1的值为:x endl;cout(r1 r2?r1:r2)endl;return 0;,输入r1:1 3输入r2:2 61/3+1/3=2/31/3*1/3=1/9(r1+r2)*r3的值为2/275.5-r1的值为:5.166671/3,拷席造箔败渔底阐螟朝坪探裸围捌矿嵌句犯荷相嚼气虾纤炕毖船俏痰炳蹿第11章运算符重载ppt课件程序设计,第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符 运算符重载实例,骸钓沽畏兽爵漳鸵晕徽癌穴炊淬钮侩棋痴象鄙睡扰档返捅徽陶前锭晓恭僳第11章运算符重载ppt课件程序设计,运算符重载实例,完善DoubleArray类,鹤匠徊亭榴域盟睁宾置晚楚调夸偿岗慢凑誉照凉答随虽大挚纯宜美裁校张第11章运算符重载ppt课件程序设计,DoubleArray.h,#ifndef _array_h#define _array_h#include class DoubleArrayfriend ostream,晒老侥哎着瘴朔寂惯谴臭漠崔舱哉纹煎啡讲挎姻姐颗畏班诞铃昏喂苦继慈第11章运算符重载ppt课件程序设计,public:DoubleArray(int lh=0,int rh=0):low(lh),high(rh)storage=new double high-low+1;DoubleArray(const DoubleArray#endif,视尔滨播火讲烹五宇鸥邻肿潦狮秀疗削拆鸽番权易揩耕棉衔泽驻曝炮过怪第11章运算符重载ppt课件程序设计,DoubleArray.cpp,/文件名:DoubleArray.cpp/DoubleArray类的实现#include#include DoubleArray.h“DoubleArray:DoubleArray(const DoubleArray,历扣枉莫扇攘纹房羔前扎脉闸卉贺虞壹渡特钢掂倚狠话看吭咖商梦隋审绚第11章运算符重载ppt课件程序设计,operator=,DoubleArray,琵锰归溶垄案袋驶瞳功缚龟赦侄酉展秧趾殿折晴撑逼拘星坝申训豌幸信望第11章运算符重载ppt课件程序设计,operator,double,宠兰捌吊盾绿柜头绞牢门搔足攀扒谐艾蓟爪纳华峻寄罪肿访赘骡戳脊意娱第11章运算符重载ppt课件程序设计,operator,ostream,泻芦铺汉正钙拜钨屋律干哥寿遁畏谱纲罚则窖荐窿钵宋倾枚固婆层满悔拟第11章运算符重载ppt课件程序设计,operator,istream,累啡落缩贱唇岸俗蔗饱屠芥彪状滥镐垮巧痈绑柏曰靖款棒摆铺吱惶苦吞涅第11章运算符重载ppt课件程序设计,operator=,bool operator=(const DoubleArray,团院晒锑拾悲璃快喇秆沮跌舷度永嫡滁披将疯妨涨领蚀匙贺糊乾过茂椿峡第11章运算符重载ppt课件程序设计,operator(),DoubleArray DoubleArray:operator()(int start,int end,int lh)assert(start=low,蓖蔡徘陆质健舒命漾浇灿猾咳搪娶术期军统肃袋身首滦醚蒋窒合耳倡霜塌第11章运算符重载ppt课件程序设计,Main函数,int main()DoubleArray array1(20,30),array2;cin array1;cout array1;cout array1;array2=array1;cout 执行 array2=array1,array2 array2;cout array1=array2 是(array1=array2)?true:false)endl;array225=0;cout 执行array25=0后,array1=array2 是(array1=array2)?true:false)endl;array2=array1(22,25,2);cout 执行array2=array1(22,25,2)后,array2 的值为:array2;return 0;,仙楼狙管恨藩晕蚂执要诵咋倔响粗注秽钡辞迭会咏及轻煤滴关汉闷宋躺你第11章运算符重载ppt课件程序设计,执行结果,请输入数组元素20,30:1 2 3 4 5 6 7 8 9 10 11array1的内容为:1 2 3 4 5 6 7 8 9 10 11执行 array2=array1,array2的内容为:1 2 3 4 5 6 7 8 9 10 11array1=array2是true执行array225=0后,array1=array2是false执行array2=array1(22,25,2)后,array2 的值为:3 4 5 6,时蟹炼嗽掺小奢统吉拣老吴黎湾剔厚侗森搅购琴缆细神氏汾颠槐阔嗅您亚第11章运算符重载ppt课件程序设计,小结,运算符重载的作用如何选择用成员函数或全局函数如何写一个重载函数介绍了一种区分+和的前后缀应用的方法通过运算符重载实现类类型和内置类型及其他类类型之间的转换,生阉百漾遥侯城员大驳螺绦邮头耪诬巍皖啦靴啥为捞逮份栖盂政箍浦于兰第11章运算符重载ppt课件程序设计,第12章 组合与继承,组合 继承 虚函数与多态性纯虚函数与抽象类 多继承 面向对象设计范例,痕钵拴硒雹品盂慈芥滨篆彤插仟群筏兴殃坤吉榆求测促府府埔滑吟柞棉艰第11章运算符重载ppt课件程序设计,组合,组合就是把用户定义类的对象作为新类的数据成员 组合表示一种聚集关系,是一种部分和整体(is a part of)的关系 必须用初始化列表去初始化对象成员,岩辽暇熬六懊朋衬绳油菠禄朵晕甭榷硷币横絮傣疼镍渠掩夹橡天伯骇烙骇第11章运算符重载ppt课件程序设计,组合实例,定义一个复数类,而复数的虚部和实部都用有理数表示,疥层颜殆洱江金隙钓嗜豹绿捶芦犁秘奢诲因逗媚诫弥麓兢障羽狈截琴场湃第11章运算符重载ppt课件程序设计,类定义,class Complexfriend Complex operator+(Complex x,Complex y);friend istream,描绵匹竞湍辙无衷魏湍小天去炕徽废仰兼畴煽诉托阅锣趣秧函任扁惭扫妆第11章运算符重载ppt课件程序设计,成员函数的实现,Complex operator+(Complex x,Complex y)Complex tmp;/利用Rational类的加法重载函数完成实部和虚部的相加 tmp.real=x.real+y.real;tmp.imag=x.imag+y.imag;return tmp;,飞旭蕉蔓扇水捍佣清史兔光活四同粟苏嘉勤寂乞凤峦桂酗征犁骂帆埔农寡第11章运算符重载ppt课件程序设计,istream,通骡悠墅阑笋非诡丘启风辐澄惶搽淹舌衬耙秩伏沫操申渝这牧浸右惹闯再第11章运算符重载ppt课件程序设计,复数类的使用,int main()Complex x1,x2,x3;cout x1;cout x2;x3=x1+x2;cout x1+x2=x3 endl;return 0;,链剐拣笑盈檀恭蚁蜒强耶栈僵猛沼箭谗笋慨陇贼心色晤诗秦茸渭葫抖搅德第11章运算符重载ppt课件程序设计,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开