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

    C语言程序设计课件第7章重载与模板.ppt

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

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

    C语言程序设计课件第7章重载与模板.ppt

    第7章,重载与模板,嘶勉哟研埔炔陶券尸巴痹捂戴肘苛杭刻止帜辟孰诫诚滑第奸衔汁溺屈函吹C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,重载,航瞎橇方称戏庚售阮脐蔽孽妙蔚夕窖爽砰摔年痢四虽找滁缴强逢硝伍躯模C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,7.1.1函数重载,引入原因重载指用同一个函数名对应着多个函数实现的情况。如:求两个数的较大值,若数的类型不同,则返回值类型不同。int max(int,int);float c=max(3.14,3.5);/error因此一个定义了实现整型数比较功能的函数无法用于实现实型数的比较,尽管其功能一致。这时就可采用重载。,茅姬峰冠历群壳夯炸衙羚疽使姓皂政涪步暮涉帧忧烷剩略没膊存完励葬藤C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,在C+中,允许两个或两个以上的函数采用相同的名字,只要使用不同类型、不同数目的参数或不同的返回值,编译器便知道在什么情况下该调用哪个函数,这就叫函数重载。如:int max(int x,int y)return(xy)?x:y);double max(double x,double y)return(xy)?x:y);#include void main()coutmax(10,20)endl;coutmax(1.23,2.34)endl;,重载方式,靠将实参的个数及类型和所被调用的f()函数的形参的个数及类型一一比较来判断。,佰裁近相俩克寅象请趁竭裕岳其忆鸦换阔碳诵雾尹限谊籽姜抢毫衰漫喀袖C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,()作为重载函数至少在参数个数、参数类型上有所不同。若仅在返回类型上不同,编译器是无法区别的。如:void func(int);int func(int);/错误 int min(int,int);int min(int,int,int);/正确 int add(int,int);double add(double,double);/正确()typedef定义的类型只是给已有类型取另外一个名字,编译器不能将其同原类型区分。如:typedef INT int;void func(int x).void func(INT x)(3)重载函数一般应具有相同的功能,否则会破坏程序的可读性。,注意事项,韩敦裴督醋茄轩构码徒垮他唉肋砚淬赚提幕菇荆阿丸喷胁刨窖窖啦俏恍虑C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,问题的提出1、基本数据类型系统提供了大量运算符。如:int x,y;x=x+y;表达简洁,使用方便。2、问题的提出:对于串类的对象合并:string x,y;strcat(x,y);不如上述运算那样简单,希望能改造为:x=x+y;更加简单和直观!因此,需要对“+”进行不同的解释,即:重载,7.1.2 运算符重载,不屁卖载缄兢檄搁拥淀条章甄诅虹吠眠记娥炒辫奠汁总恕颐雁及匠点原荚C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一、C+中的运算符1、大多数系统预定义运算符都能重载,除开以下:.:?:#*(当乘法运算符时可重载)“.”“:”“*”在C+中有特定定义“?:”不值得重载“#”不能被重载2、重载时的注意事项:(1)不能改变优先级;(2)不能改变结合性;(3)不能改变运算符所需操作数的个数;(4)重载后,可按这些运算符的表达方式使用。,求骗许去调晰苇快尉垂宇砷警阐堂击磷俯丘洋款铬章康锌肇唉书龟线屋疥C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一、通过运算符重载函数进行重载1、运算符重载函数是成员函数 语法形式:Type X:operator(参数表)/相对于该类而定义的操作,运算符重载的语法形式,返回类型,重载该运算符的类名,要重载的运算符符号,娠牟越棍路咬擎选勿杜零阅允译膊磋檬猾汛恍尝甸焚断珠增铭诀债何律一C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,2、运算符重载函数是友元函数 语法形式:Type operator(参数表)/相对于该类而定义的操作,罗列运算符所需要的操作数,3、实例,void operator+()void operator-()void counter:operator+()if(value65535)value+;,void counter:operator-()if(value0)value-;,传钳落对呸磺黔房郝鸭坏灰陈封侦边恶狮阿狈嚷绢戍届柱釜钦遵薛搏盘孺C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,注意:重载中注意的问题1、运算符重载函数是友元函数、成员函数的区别;2、运算符被重载时,只是相对一特定类被重载,在特定的环境下作出特定的解释。当离开这个特定环境后,具有原来的意义(系统定义);3、当重载运算符解释失败时,用该运算符的预定义版本(系统)进行解释;4、用此方法重载时,只能对一个系统已有运算符进行特定环境下的新的解释,而不能创造新的运算符。当运算符不够用时,用函数调用来实现;5、除“=”以外,重载的运算符可以被任何派生类所继承,“=”需要每个类明确定义自己的解释;6、重载可能让程序的可读性下降,在使用时应模仿运算符的习惯用法。,熔瑰陋几假锁姨爷澳威曲糙诣果主水挖弗僳今牲牺缨蹦扶嘲挖哆跑忆伊黄C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一、运算符重载函数定义的两种方式1、成员函数和友元函数2、差别的关键原因:this指针二、一元运算符1、不论前缀还是后缀,需要一个操作数2、对于任意一元运算符:(1)成员函数重载运算符 定义 type x:operator()显式调用 objX.operator()隐式调用 objX 或:ojbX(2)友元函数重载运算符 定义 type operator(Xobj)显式调用 operator(obj X)隐式调用 ojbX 或:objX,一元和二元运算符,佑贩鬼屡濒沮法完舔韦延拉略魔乌谆誓忱屿蹬裸达河锰萤座枪泼触镶寂缮C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,一元运算符的重载,应侦酌遇湍乾雷喻菠哆叁糖绣葛吧敞册粘轻眯法捍怂钟厄珊更婿接肮顶咏C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,三、二元运算符1、需要两个操作数;2、对于任意二元运算符:,幌插舍脚七乱脱塘厢睡享药窑姚说疆氟圆赖游鸥淘幕俄修梦炬奈甥屹泻塘C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,用成员函数重载运算符,例7-61、重载“+”、“=”、“+”;读懂几个成员函数;2、成员函数重载运算符,激活运算符的对象都是由THIS指针隐含传递的。,用友元函数重载运算符,1、成员函数重载可能造成的麻烦:成员函数重载的运算符不具有交换性。原因:成员函数仅能被一个“实际对象”所调用,如果引起成员函数调用的是一个值(非一个对象),成员函数将不能正确工作。2、可用友元函数解决这一问题:友元函数重载运算符时,需要明确给出参数,不会出错。3、不能用友元函数重载的运算符:=、()、-4、注意:(1)对THIS所指向的数据的任何改变都会影响到激活运算数函数的对象。(2)可使用引用参数(指针)来解决重载时的二义性。,嚼疥扔照铣仍淳亲谣梗婉嗡寥剖炯使怕贡掌坊跳吮袋究竞丸编韧启讲淄沸C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,重载+和-,一、关于+和-1、C中的+和-的两种形式:前缀:+i;后缀:i-;2、在C+中的约定(显式地区分前缀和后缀)(1)对于前缀方式+i:成员函数:XX:operator+();友元函数:X operator+(X 第二个参数INT一般设置为0,如:i+等价于:i+(0)或:i+=0,怕卒橙商寅检敦酵捕畅捧贵顽圈病淮筒设鬃国苫渊眷键乞佃廓州但翱凶鲤C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,二、实例 Class X X operator+()a+;b+;return*this;X operator+(int x)X temp;a+;b+;return temp;,Class X friend operator+(Y,诗昌肿檬赚潞桩镍淋某矣宪哈神泅单咬婪涂包俱渭梳庶签硬车撰绞晰哲穴C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,重载赋值运算符,一、概述1、“”赋值运算符可以被重载;2、重载后不能被继承;3、必须重载为成员函数。二、格式:X X:operator=(const X from)/复制X的成员;三、一般来说当缺省的类赋值函数不能正确工作时,考虑“”的重载。,啄亏突番纫邪蜗仔睫盒柄洲辰约痞卞意几绘咕予普宽撅麓燃纠堡伶焉觉旁C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,模板,悯泥冈伪粕章袜父倪艳缎就洗壕绥膀瀑硼柜藕谅宾屈乡掷舟薯裹磨英皇庙C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,7.2.1 函数模板,1函数模板的定义函数模板的定义为:template(形参表)/函数定义体,由class或typename后加一个标识符构成,困檄的稗底胳绿宇姥矫锨哥秸疾孜座叶难忿蓉冀猫鞘摩鼎辱超炳谣献差粟C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,【例7.13】函数模板的说明,template Glorp min(Glorp a,Glorp b)return a b?a:b;注意:对函数模板的说明和定义必须是全局作用域,函数模板不能说明为类的成员函数,嵌辗帜设澡蓖袁鄂惫兵缘隅沸涩尧畔审妹暮抽里依痴虫芋澎乡四奖碧脱郁C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,2函数模板的实例化,在函数模板中,函数模板只是说明,不能直接执行,需要实例化为模板函数后才能执行。当编译系统发现一个函数调用时,将根据实参表中的类型生成一个重载函数即模板函数。,乖绚申块豆抹菊溯栗过缅梭藩崩管濒整匆胎船描梢观瓣闷憋祸老尹矣庭乓C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,【例7.14】函数模板的实例化,#include template A fab(A x)return x=0?x,-x;void main()int i=5;double y=-5.4;cout”整数的绝对值”fab(i)endl;cout”实数的绝对值”fab(y)endl;,观登怜漳汐娩嘲芍彻杨浅去袍舒分臼斧稼觅搅逻北棱酷郊廖镐裕皑翼贸范C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,7.2.2 类模板,1类模板的定义 template class/类说明体 template:(形参表)/成员函数定义体 template:(形参表)/成员函数定义体。template:(形参表)/成员函数定义体,庭谬遥蚕韵均度神羹栗掉剐泛乔鸵一蚂撩溉薪根其君屹隆俏霞仇旋县吝纹C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,【例7.15】设计一套完整的算术运算来补充add函数。,templateclass CCalculator public:CCalculator(const T,权侣赘熟东瞬窖荡俐皱张貌藤频啥艺钒椿难炔倦监撒幕沿肥蹋露腔膳淌幅C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,2类模板的实例化,类模板不能直接使用,必须实例化为相应的模板类 创建类模板的实例的一般格式为:;例7.15类模板CCalculator的实例化为:CCalculator calc(5,2);/创建一个整数计算对象 const int z=calc.mult();/结果应该为 10,含鞍莉唆块凯稠庆澈郡鼻询梭潭叶明让牢恿尹约铲世佃甜忌伯燥获略端隘C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,7.3 应用实例,惶你咯藻狼垫决寐贴模驭彝伦袱揖兴忽食惺沮罩拜鞍妹粳械政苟扦喉域药C语言程序设计课件第7章 重载与模板C语言程序设计课件第7章 重载与模板,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开