- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
探析C++中函数重载的运用
摘要:函数重载机制是C++语言中的关健技术之一,它允许功能相近的函数在相同的作用域内以相同函数名定义,编程中合理的使用函数重载,可以增强程序设计的灵活性、扩充性和可读性。
关键词:函数重载;编译器;覆盖
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)28-0135-02
Application of Function Overloading in C++
LIN Yong
(Department of Computer, Shanxi University of Technology, Hanzhong 723001, China)
Abstract: Overloaded function is one of the key technology in C++ language,which allows name same definition with similar function withinn the same role.Using of overloaded function rationally in programming can enhance the flexibility, Scalability and readability of the process design.
Key words: function overload; Compiling device; Cover
1 引言
相对C语言的函数,C++增加了重载(overloaded)机制。重载机制既可用于全局函数,也可用于类的成员函数。函数的重载也称多态函数,对于没有重载机制的C语言,每个函数必须有其不同于其它函数的名称,即使操作是相同的,仅仅数据的类型不同,也需要定义名称完全不同的函数,这样就显得重复且效率低,而具有重载机制的C++语言,允许功能相近的函数在相同的作用域内以相同函数名定义,因而使函数方便使用,便于记忆,也使程序设计更加灵活。
基于C++相对于C语言的重载的优点,合理的使用重载,将大大地提高程序的运行效率和代码的可读性。
2 重载的概念
在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载。这样便于记忆,提高了函数的易用性。例如下面的函数EatBeef,EatFish,EatChicken可以用同一个函数名Eat表示,用不同类型的参数加以区别。
void EatBeef(…);// 可以改为 void Eat(Beef …);
void EatFish(…);// 可以改为 void Eat(Fish …);
void EatChicken(…); // 可以改为 void Eat(Chicken …);
3 重载实现的原理
几个同名的重载函数仍然是不同的函数,如何区分它们呢?我们自然想到函数接口的两个要素:参数与返回值。如果同名函数的参数不同(包括类型、顺序不同),那么它们是不同的函数;如果同名函数仅仅是返回值类型不同,有时可以区分,有时却不能。例如:
void Function(void);
int Function (void);
上述两个函数,第一个没有返回值,第二个的返回值是int类型。如果有调用函数语句:int x = Function();则可以判断出Function是第二个函数。但在C++/C程序中,可以忽略函数的返回值。在这种情况下,编译器和程序员就不知道哪个Function函数被调用。所以只能靠参数而不能靠返回值类型的不同来区分重载函数。编译器根据参数为每个重载函数产生不同的内部标识符。
但并不是两个函数的名字相同就能构成重载。全局函数和类的成员函数同名不算重载,因为函数的作用域不同。例如:
void Print(…);// 全局函数
class A
{…
void Print(…); // 成员函数
}
不论两个Print函数的参数是否不同,如果类的某个成员函数要调用全局函数Print,为了与成员函数Print区别,全局函数被调用时应加‘::’标志。例如:
::Print(…); // 表示Print是全局函数而非成员函数
4 函数重载的实现
4.1 非成员函数重载
非成员函数重载是C++过程性部分,形式有:
1) 重载函数使用不同类型的参数,例如:
int min(int x,int y) {return xy?x:y?}
double min(int x,int y) {return xy?x:y?}
在调
您可能关注的文档
最近下载
- Y Y-T 1118-2001 石膏绷带 粘胶型.pdf VIP
- 中职语文《江姐》(节选) 知识清单.docx VIP
- 绝望的主妇经典台词1-8季中英对照.pdf VIP
- 华力液压模块车(SPMT)使用说明书.pdf VIP
- 2025年保安员(初级)考试模拟100题(含答案) .pdf VIP
- 2024四年级上册语文课课贴(彩虹版).pdf VIP
- GZ055 环境艺术设计赛项赛题15套-2023年全国职业院校技能大赛赛项赛题 .pdf VIP
- 12小学体育二年级课程纲要.doc VIP
- 粘胶型石膏绷带产品技术要求2023完整版.docx VIP
- 2025-2026学年初中数学七年级上册(2024)华东师大版(2024)教学设计合集.docx
文档评论(0)