《C++程序设计》全套PPT电子课件教案- 第4章 重载参考.ppt

《C++程序设计》全套PPT电子课件教案- 第4章 重载参考.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C程序设计》全套PPT电子课件教案-第4章重载参考

4.1 函 数 的 重 载 4.2 运 算 符 重 载 * 4.1 函数的重载 4.2 运算符重载 第 4 章 重载 返回主目录 4.1.1 函数重载的定义 在第1章介绍C语言与C++之间的关系时,提到C++语言中允许函数重载,即可以有多个同名但参数形式不完全相同的函数。它允许程序员定义作用相同但参数形式不同的函数,在调用时无须记忆多个函数名,而且可以增加程序的可读性。例如,求两个数中最大值的函数max,不管其参数的整数类型、实数类型、字符串,都可以使用同名函数来实现,调用时只需使用max就可以了,编译器将根据实参的类型判断应该调用哪一个函数。 函数重载无须特别声明,只要所定义的函数与已经定义的同名函数形参形式不完全相同,C++编译器就认为是函数的重载。例如下面的两个函数: void GetTime(long *ticks); void GetTime(int *hours, int *minutes, int *seconds); 作用相同,都是返回当前时间,只是其返回的时间表示形式不同,使用相同的函数名,但其参数形式不同。 在使用函数重载时要注意,如果某个函数参数有缺省值,必须保证其参数缺省后调用形式不与其它函数混淆。例如下面的重载是错误的: int f(int a, float b); void f(int a, float b, int c=0); 因为第二个函数缺省参数c后,其形式与第一个函数参数形式相同。下面的函数调用语句: f(10, 2.0); 具有二义性,既可以调用第一个函数,也可以调用第二个函数,编译器不能根据参数的形式确定到底调用哪一个。 类的函数成员同样也可以重载。例如前面介绍的构造函数,一个类可以具有多个不同参数形式的构造函数。类的函数成员的重载与全局函数的重载方法相同。 4.1.2 一个简单的例子 下面实现前面提到的max函数的重载版本: int max(int a, int b) { if(ab) return a; else return b; } float max(float a, float b) { if(ab) return a; else return b; } char * max(char *a, char *b) { if(strcmp(a,b)0) return a; else return b; } 这里定义了三个名为max的函数,它们的函数原型不同,C++编译器在遇到程序中对max函数的调用时将根据参数形式进行匹配,如果找不到对应的参数形式的函数定义,将认为该函数没有函数原型,编译器会给出错误信息。 4.1.3 在C++中编译C程序 在使用C++语言进行程序开发时,由编译器将源程序文件编译为目标文件,并进行连接。为了实现函数的重载,C++语言编译器在编译时对函数的处理与C语言编译器采取了不同的方法。C语言编译器在处理函数时只需保留函数名的信息,即可在连接时将不同的函数区别开来;而C++编译器在编译时生成一个包含函数名和函数参数信息的符号来取代原来的函数名,以保证在连接时能够找到正确的函数。 但是,有时程序员可能希望编译器对某些函数使用C编译的习惯来进行处理。例如,需要在C++程序中调用C语言编译的函数库中的函数,此时可以采取如下的方法来编写包含该函数库中的函数原型声明的头文件。 extern C { /*在此处写上函数的原型声明*/ 编译器将以C语言的编译方式处理该函数的名字。 如果要保证该头文件能够同时被C编译器和C++编译器正确编译,可采用下面的方法: #ifdef __cplusplus extern C { #endif /*在此处写上函数的原型声明*/ #ifdef __cplusplus } #endif 4.2.1 运算符重载的基本方法 C++语言中提供了运算符重载的机制,程序员可以对自定义的数据类型使用C++语言本身提供的标准运算符进行运算,运算的方式由重载的特殊函数来完成。这些函数有特殊的函数名,可使用运算符方式进行调用,当然也可以使用传统的函数调用的方式进行调用。 使用运算符重载可以提高程序的可读性。例如,前面讲的整形数据元素集合类的

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档