探析C++中函数重载的运用

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:fishe1042
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:函数重载机制是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 x  double min(int x,int y) {return x  在调用过程中,C 编译器将根据调用式中实参的类型决定调用哪一个重载函数,如函数调用min(2,3),编译器将调用执行时代码定到第一个函数体上,而函数调用min(2.5,3.5)就被被编译器定到第二个函数体上。
  2) 重载函数中使用不同数目的参数,例如:
  int min(int x,int y) {return x  int min(int x,int y,int z)
  {int t=x  trturn t  C 编译器将根据函数调用表达式中实参的个数,对于调用min(10,20)编译器确定调用执行代码是一个重载函数的函数体,对于调用min(10,20,30)编译器确定调用执行代码是第二个重载函数的函数体。
  因此,在C 中,利用重载机制把调用重载工作交给编译器大大提高了程序的灵活性和扩展性。
  4.2 成员函数重载
  C 类部分,类中的成员函数也可以被重载,有下面两种方式:
  1) 类成员函数重载
  #include
  class List//实现一个List类
  {float x,y;
  public:
  List() {x=0.0;y=0.0;}
  List(float x1,float y1) //重载构造函数
  {x=x1;y=y1;}
  void set(float m,float n)
  {List::x=m;
  List::y=n;}
  void set(List
其他文献
随着经济全球化速度的不断加快,国与国之间的联系更加紧密。因此,新时代的教育应该放眼于世界,重视培养学生的跨文化交际能力。美国学者戴维斯(Linell Davis)是南京大学聘请的专家,其对中国文化兴趣浓厚,而且在中国居住多年。他常年致力于中美文化的比较研究,利用大量翔实的材料来佐证自己对中国文化的感悟。《中西文化之鉴》就是其研究成果之一。该书共16章,主要包括全球化思维、利用代码交流、建立关系、文
【关键词】语文要素,单元整组,教学策略  语文要素是统编教材提出的一个核心概念,是构建语文教材训练体系的基石。现阶段,教学观念不断更新,语文要素的重要性已经引起了教师们的重视。可若从一线课堂教学实践反观之,语文要素的训练孤立化、片段化、说教化等现象屡见不鲜,如不关联前后年级语文要素之间的内在联系,不整合单元整组语文要素训练的内在逻辑,不落实语文要素转化为语文素养的内在要义。  统编教材将语文要素按
人类诗歌史在歌谣这种自然的艺术形态中经历了漫长的发展阶段。從形态上讲,原始诗歌的一部分,就是与原始音乐、与舞蹈结合在一起的;但从诗歌史发展的进程来说,许多成熟的诗歌艺术系统,都经历了由民间歌谣到与高度发达的音乐系统配合的乐章歌诗的演变过程,比如《诗经》和乐府诗歌。这就使得在中国古代各种诗歌体裁和诗歌品种中,乐府诗成为最为特殊且复杂的一种,因此对它的研究也涉及了中国古代诗歌的许多重要问题,比如诗歌的
摘要:在有线电视光链路设计中,参数的计算是一项繁琐且很重要的工作内容。有时由于一个数据的更改会引起所有数据的重新计算,甚至会耗用设计人员数小时的时间,因此利用计算机进行辅助设计计算是一条必然之路。现充分利用Excel表的计算功能,总结出在有线电视光链路设计过程中的使用方法。  关键词:Excel;有线电视光链路设计;应用  中图分类号:TP311文献标识码:A 文章编号:1009-3044(200
摘要:本文介绍了一种基于CAN总线的温湿度监控系统的设计与实现。系统利用CAN总线构成了多节点监控网络,实现了对仓库多点温湿度的监控。本文介绍了监控系统的整体结构,并重点阐述了现场子节点的硬件以及软件设计。实践证明,该系统具有良好的扩展性、可靠性以及广泛的利用价值。  关键词:CAN;温湿度;分布式系统;数据采集  中图分类号:TP273文献标识码:A文章编号:1009-3044(2008)08-
【关键词】预测,阅读策略,整本书,导读  整本书的导读形式多种多样,主要围绕“唤醒学生阅读期待”“怎样阅读一本书”“阅读计划”等内容展开。但是这样的阅读课略显不足。怎样将阅读策略与导读课结合起来,这是我们须要思考的新课题。  统编教材三年级上册第四单元是预测策略单元,该单元的语文要素是让学生学习预测的基本阅读方法,让学生学会一边读一边预测。学习精读课文《总也倒不了的老屋》,借助助学系统,对文章的题
摘要:介绍多媒体辅助教学的结构设计和脚本编写方法。对CAI课件的线性结构设计和非线性结构设计进行了深入地分析;对CAI课件文字脚本、制作脚本的编写要求、方法及特点进行了详尽地阐述并给出具体实例。  关键词:CAI;结构设计;脚本;知识点  中图分类号:G434文献标识码:A文章编号:1009-3044(2008)15-20ppp-0c    Structure Design and Script
书名:文学欣赏  作者:董君,许国英  出版社:山东人民出版社  出版时间:2016年  ISBN:9787209097307  定价:38元  高尔基曾说:“文学即人学。”文学的重要功能是表达人的情感体验。这体现了文学审美论的基本思想:文学的最重要属性是审美性,文学的根本价值是审美价值,具體体现为唤起读者的审美经验,或者为读者提供审美经验。尽管文学通常被认为具有认知功能、教育功能、审美功能和娱乐
摘要:介绍了Ajax的基本原理及其在Web应用程序开发中的优势,探讨了在开发Web应用程序过程中如何有效地通过Ajax降低网络负载和改善用户浏览体验等问题,为开发和研究Web应用开辟了新的思路。  关键词:Ajax; Web应用程序; XML  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)12-20ppp-0c    Ajax Basic Principle and
摘要:支持向量机(Support Vector Machine, SVM)是一种基于统计学习理论的机器学习方法,由于其出色的学习性能,早已成为当前机器学习界的研究热点;而决策树是一种功能强大且相当受欢迎的分类和预测工具。本文重点介绍支持向量机与决策树结合解决多分类问题的算法,并对其进行评析和总结。  关键词:支持向量机;决策树;多分类;SVMDT   中图法分类号:TP39文献标识码:A 文章编号