c的函数重载剖析

c的函数重载剖析

ID:31630656

大小:55.31 KB

页数:3页

时间:2019-01-16

c的函数重载剖析_第1页
c的函数重载剖析_第2页
c的函数重载剖析_第3页
资源描述:

《c的函数重载剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、C++的函数重载剖析TheAnalysisofFunctionOverloadinginC++庞新法PANGXin-fa(陕西省委党校科技教研部,西安710061)(TechnologyResearchDepartment,ShaanxiProvincePartySchooloftheCPC,Xi'an710061,China)摘要院木文介绍了什么是函数重载、为什么需要函数重载、编译器如何解决函数重名问题、编译器如何解析重载函数的调用。通过案例予以解释分析,旨在提高C垣垣编程质量。Abstract:Thispaperintroduces

2、whatisthefunctionoverloading,whyoverloadedfunctionsareneeded,howtosolvetheproblemofthecompilerfunctionnameandhowthecompilerresolvesoverloadedfunctioncall.ItisinterpretedthroughcaseanalysisinordertoimprovethequalityoftheC++programming.关键词院程序设计;面向对象;函数重载Keywords:programdes

3、ign;objectoriented;functionoverloading中图分类号院TP313文献标识码院A文章编号院1006-4311(2014)25-0228-021绪论在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C垣垣中,函数名相同而参数不同的两个函数被解释为重载。使用函数重载可以帮助程序员应付更多的复杂性,避免了使用繁杂的函数名称。C++可以对不同功能赋予相同的函数名,函数调用时,由编译程序根据上下文(实参的类型,个数)理解确定调用哪一个,以方便用户管理和使用函数名。自然语言中的“一词多义”,反映到程序中就是

4、重载。例1通过重载求a的绝对值intabs(inta){returna>0?a:-a;}doubleabs(doublea){returna>0?a:-a;}voidmain(){cout<<abs(-10)<<endl;//调用(匹配)abs(inta)cout<<abs(・5.4)<&t;endl;//调用(匹配)abs(doublea)}2兀配重载函数C垣垣允许功能相似的函数在相同的作用域内以相同的函数名声明,从而形成重载。那么用户调用同名函数时,编译程序如何确定(匹配)到底调

5、用哪一个函数,称为匹配重载函数。编译吋,根据作用域、返冋值类型、函数名、形参类型、形参顺序把同名函数转换成不同名函数(用函数内部名),内部函数名构成规则:作用域+返冋值类型+函数名+形参列表。匹配重载函数吋按以下优先级进行:淤精确匹配:参数匹配而不做转换,或只做微不足道的转换。于隐式转换匹配。盂自定义匹配。榆编译程序寻找匹配函数吋,函数的类型不起作用。2.1重载函数必须在同一作用域内例2/*file2.c文件*/staticintabs(inta){returna>O?a:-a;}staticdoubleabs(doublea){

6、returna>0?a:-a;}voidmain(){cout<<abs(-10)<<endl;//调用(匹配)abs(inta)cout<<abs(-5.4)<<endl;//调用(匹配)abs(doublea)}intabs(inta),doubleabs(doublea),voidmain()在同一作用域内,main既可调用intabs(inta),又可调用doubleabs(doublea)ointabs(inta),doubleabs(doublea)是重载函数。2.2重载

7、函数具有不同的形参不同的形参指的是形参类型不同、形参个数不同、形参顺序不同。淤形参类型不同。如intadd(intx,inty);floatadd(floatx,floaty);于形参个数不同o如intadd(intx,inty);intadd(intx,intyjntz);盂形参顺序不同。女口floatadd(intx,floaty);floatadd(floatx,inty);函数intadd(intx,inty)、floatadd(floatx,floaty)>intadd(intx,intyjntz)、floatadd(intx

8、,floaty)、floatadd(floatx,inty)是重载函数。例3voidmain(){cout<<add(2,3)<<endl;〃调用精确匹配intadd(intx,in

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。