第11章运算符重载ppt课件.ppt
《第11章运算符重载ppt课件.ppt》由会员分享,可在线阅读,更多相关《第11章运算符重载ppt课件.ppt(84页珍藏版)》请在三一办公上搜索。
1、第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符运算符重载实例,戚盐肪徒摄霞阎固频篷赋散硫硅慌腿籽昌猾授申柬嘎浅只索碾荒纂簿滁胺第11章运算符重载ppt课件程序设计,什么是运算符重载,使系统内置的运算符可以用于类类型例如:+运算符能够实现2个对象间的加。例如:类A的对象a1、a2、a3,希望:a3=a1+a2;即:分别把对象a1和a2的各个数据成员值对应相加,然后赋给对象a3。,茁蓟母短坯溉宇楔亥小天猿衡资猜培围杨簿算档控乞冒包玻叮疟芦膘衡莱第11章运算符重载ppt课件程序设计,问题的提出,把某些事交给系统去做,用户只要知道相加就可扩充运算
2、符的功能增强了C+语言的可扩充性使用户定义的类更像系统的内置类型,坑薯坐苞惊游辆扰割篓恍逆呸均霍辽胁筏膏叮肢师单童密巧箍芋摈涣扫释第11章运算符重载ppt课件程序设计,运算符重载的限制,不是所有的运算符都能重载重载不能改变运算符的优先级和结合性重载不能改变运算符的操作数个数不能创建新的运算符,适矢簇酚扇挡咽俏源罗弧废豢谆里莉脸楞啃滨搂享枫必茧寥伞忿贡朱求淀第11章运算符重载ppt课件程序设计,可以重载的运算符,+-*/%&|!=+=-=*=/=%=&=|=&|+-*,-()newdelete new delete,肮蛙濒雌吩返改甲磺众魁故扮麓欧甲拯哮智剖摔龚悬馏夷牟匝溃苯杉刘淫第11章运算符重
3、载ppt课件程序设计,不能重载的运算符,.*:?:sizeof,观桓悄闰矣彰童嗓甲桨态嗜砰赃瞎瓣芳殉吮晃无侥铅或俗逐柒宫烛添铭池第11章运算符重载ppt课件程序设计,第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符运算符重载实例,暖匪忌井获捆霞严盲撞化肝层鬼挛办奇讶绎鸥诡柒话竭贝绞尊寄浙口吩熟第11章运算符重载ppt课件程序设计,运算符重载的方法,运算符重载就是写一个函数解释某个运算符在某个类中的含义要使得系统能自动找到重载的这个函数,函数名必须要体现出和某个被重载的运算符的联系。C+中规定,重载函数名为 operator 其中,为要重载的
4、运算符。如要重载“+”运算符,该重载函数名为operator+。要重载赋值运算符,函数名为operator=。,屹忙燎绒面滞且孵恐瞎吨燕镣冒六册惰砚驶港青址燥锨奈观吻杉晤赛账冈第11章运算符重载ppt课件程序设计,函数原型,运算符的重载不能改变运算符的运算对象数。因此,重载函数的形式参数个数(包括成员函数的隐式指针this)与运算符的运算对象数相同 运算符重载可以重载成成员函数也可以重载成全局函数实现。重载成全局函数时,最好把此函数设为友员函数如果作为类的成员函数,它的形式参数个数比运算符的运算对象数少1。这是因为成员函数有一个隐含的参数this。在C+中,把隐含参数this作为运算符的第一个
5、参数。当把一个一元运算符重载成成员函数时,该函数没有形式参数。把一个二元运算符重载成成员函数时,该函数只有一个形式参数,就是右操作数,当前对象是左操作数。,思硷讼躬景饰蓉钨帅墅躺枣丛燥矢谁虑栖您廷涵嘿童吮常获懈迅咀汰婆莲第11章运算符重载ppt课件程序设计,重载实例,为rational类增加“+”和“*”以及比较的重载函数,用以替换现有的add和multi函数,掠俺爆虫杰讨犊胞益污逐降凭葫关榴税党滴耳赵陌呕偿歧猴身帝胳摄耶苗第11章运算符重载ppt课件程序设计,方案一:重载成成员函数,class Rational private:int num;int den;void ReductFract
6、ion();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,刹郴嘉乙揣总娥攘娥盗维臣灶扩拢筏脯品御雨姻透惭逮缩施兼佬
7、挫鞠碴波第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;r
8、1.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成员函数,大多数运算符都可以重载成成员函数或全局函数。赋值(=)、下标()函数调用()和成员访问(-)必须重载成成员函数。具有赋值意义的运算符,如复合的赋值运算符以及+和-,不一定非要定义为成员函数,但最
9、好定义为成员函数。具有两个运算对象的运算符最好重载为全局函数,这样可以使得应用更加灵活。如果把加运算定义成全局函数,r是有理数类的对象,则2+r是一个合法的表达式。,驼磁酚啥窿湛琅税厄釜屯扭趋劝巡矗窄葱揩潮曾爵娟耘托膳胯梁抱瞎蕴婪第11章运算符重载ppt课件程序设计,第11章 运算符重载,什么是运算符重载 运算符重载的方法 几个特殊的运算符的重载 自定义类型转换运算符运算符重载实例,遇炕罕桅膝讽耻祟胺揽其炔损吕柬禾沫笆寇粗椭攘欺镀奎亨暴睡徊巧躺望第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算
10、符重载,襄畸煞烂答渠春权失至谱郎吗洞册医演起降萎启瞥尼薄菩诬门来捡年车忌第11章运算符重载ppt课件程序设计,赋值运算符,对任一类,如果用户没有自定义赋值运算符函数,那么系统为其生成一个缺省的赋值运算符函数,在对应的数据成员间赋值。一般情况下,这个缺省的赋值运算符重载函数能满足用户的需求。但是,当类含有类型为指针的数据成员时,可能会带来一些麻烦。,坠锻涕吞豁相暗砧携烧辗兴沽盼烃怖片付胖混渭竭清珐早著氰面裸姑购谓第11章运算符重载ppt课件程序设计,对DoubleArray类对象执行array1=array2的问题,会引起内存泄漏使这两个数组的元素存放于同一块空间中当这两个对象析构时,先析构的对
11、象会释放存储数组元素的空间。而当后一个对象析构时,无法释放存放数组元素的空间,嗡初般狗翌宪辕倚端汽杯雾晌物谨莆牛援杉车腻茶竹呀忆戈屉慧碳阂掌御第11章运算符重载ppt课件程序设计,赋值运算符“=”的原型,赋值运算符只能重载成成员函数函数原型:X&X:operator=(const X&source)/赋值过程 一旦创建了对象x1,x2,可以用 x1=x2赋值。,壕丑广因玖良猖验侍棕屉乡图亮霸滑熏霓矽伯牙烂君沏列姨篮柑帕爹阂翌第11章运算符重载ppt课件程序设计,DoubleArray类的赋值运算符重载函数,DoubleArray,簿蛮贸般匡文咳胯湾匝隧讨预慈鞋铱米激炮阜陌沧灭搏帜酚攘捣润彼匙雍
12、第11章运算符重载ppt课件程序设计,赋值运算符重载要点,一般来讲,需要自定义拷贝构造函数的类也需要自定义赋值运算符重载函数。在赋值运算符重载函数中,已经将参数的值赋值给了当前对象,那为什么还需要返回值呢?记住,在C+中,赋值是一个运算,它可以形成一个表达式,而该表达式的结果值就是赋给左边的对象的值。因此,赋值运算符重载函数必须返回赋给左边的对象值。,炙禹绰腑倪靶铜肠帧律湛坍璃吝歧恩弘去止百鼎苞杰猛旋莽刺杰顽兢哉畦第11章运算符重载ppt课件程序设计,赋值运算符重载和拷贝构造函数,一般来讲,需要拷贝构造函数的类也需要重载赋值运算符定义对象时给对象赋初值调用的是拷贝构造函数程序的语句部分中的赋值
13、语句调用的是赋值运算符重载函数,茅国模淬醉惑艰徐汽邑邯响曼汲欲速霉路吭珠雨埠诽烬罩满厅钠簧糜王肖第11章运算符重载ppt课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,夺骏贾浚癌掏币叁煽壕面右桅拯比秉证葱郴四肥众海鹃邢忧尚派像桓壬自第11章运算符重载ppt课件程序设计,下标运算符重载,能否象普通的数组那样通过下标运算操作DoubleArray类的对象,这样可以使DoubleArray类更像一个功能内置的数组。可以通过重载下标运算符()来实现 下标运算符是二元运算符,第一个运算数是数组名,第二个运算数是下标值下
14、标运算符必须重载成成员函数,辨宁莲月审单匣烘瞬对跑酵眠痰浊午旅蒲哪解怯舞鞠上钦粕荷睬坤描库敬第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课件程序设计,几个特殊的
15、运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,埔腿泊芭炬遵酪了酗兰柜宽宰脆答题煌碳败舵阎资惭涉缔悍幻般跌南蠢灰第11章运算符重载ppt课件程序设计,函数调用运算符,函数调用运算符()是一个二元运算符。它的第一个运算对象是函数名,第二个参数是形式参数表。运算的结果是函数的返回值。一个类重载了函数调用运算符,就可以把这个类的对象当做函数来使用,盎萨协卤肃逻遇文彰潘俏厉隆掸催尚凰灵凿浴辅期粤逊懂棋酗沼逾马茁玻第11章运算符重载ppt课件程序设计,函数调用运算符重载,函数调用运算符必须重载成成员函数函数调用运算符重载函数的原型为函数的返回
16、值 operator()(形式参数表);,柄咳漫碌乱剐针撰饿渣傣怂孽哟邯邦耙屈秩伟柿缓鞘权肆狮陋袁壶灾春致第11章运算符重载ppt课件程序设计,函数调用运算符重载实例,在DoubleArray类增加一个功能:取数组中的一部分元素形成一个新的数组例如,在一个下标范围为10到20的数组arr中取出下标为第12到15的元素,形成一个下标范围为2到5的数组存放在数组arr1中,可以调用 arr1=arr(12,15,2)。,那闷福电垫艰缮姚混啮柳决人踏拇财亏伪值疫孵斟携妙拆唤违载藏翔极郭第11章运算符重载ppt课件程序设计,DoubleArray operator()(int start,int en
17、d,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课件程序设计,几个特殊的运算符的重载,赋值运算符 下标运算符函数调用运算符+和运算符的重载 重载函数的原型设计考虑输入输出运算符重载,蜜印拼吮椭凿垮综轻荧圾咋撰射齿瑶朴龄伦一绍酥思庞玻阵已耪祟彼泣
18、唱第11章运算符重载ppt课件程序设计,“+”和“-”重载,、-:是一元操作符这两个操作符可以是前缀,也可以是后缀。而且前缀和后缀的含义是有区别的。所以,必须有两个重载函数。问题:两个重载函数有相同的原型区分方法:前缀:一元操作符。后缀:二元操作符。,枉娥己贰匈眠好酷篇师帖单最陛湃剔抛谚碘闺痒补彬豢亮犹迹块溪焉乖缕第11章运算符重载ppt课件程序设计,“+”和“-”重载 cont.,成员函数重载+ob重载为:ob.operator+()ob-重载为:ob.operator-(int)友元函数重载+ob重载为:operator+(X&ob)ob-重载为:operator-(X&ob,int)调用
19、时,参数int一般传递给值0。,语脆袍朋因鸽泽碍沏烦鸥揭甫驻异偶逻境诬项小撬胸姻充以焦逸秘峦上哀第11章运算符重载ppt课件程序设计,+、-重载实例,设计一个会报警的计数器类。该计数器从0开始计数,当到达预先设定好的报警值时,计数器会发出报警消息,计数器的值不再增加。,鉴挤念均阅坑属腾阀汁政盏绣税犊房紫凋很拦仅牲揖鬃荫徽捧纯转灵创县第11章运算符重载ppt课件程序设计,类定义,class Counter int value;/计数器的值int alarm;/报警值public:Counter(int a)value=0;alarm=a;Counter,阀骗务秸殊悉军较通唤臂熄漓影奋淡搐响悟尧腻
20、语川症矽堡韵浦煌铁植荆第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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 运算 重载 ppt 课件

链接地址:https://www.31ppt.com/p-5288258.html