- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.7~4.10 函数的一些高级议题
3.5 函数的一些高级议题 3.5.3 内联函数 3.6 C++的系统库函数 3.7.2 多文件结构 3.8 编译预处理 3.8.1 宏定义指令#define 3.8.2 文件包含(嵌入)指令#include 3.8.3 条件编译指令 * * 3.5.1 函数重载 3.5.2 缺省变元 3.5.3 内联函数 3.5.1 函数重载 在C++中,如果需要定义几个功能相似,而参数类型不同的函数,那么这样的几个函数可以使用相同的函数名,这就是函数重载。 例如求和函数,对应不同的参数类型,可以定义如下几个重载函数: sum(int a,int b) //不写返回类型,返回整型 double sum(double a,double b) float sum(floata,float b,float c) 对于以下语句,各有不同调用: int x=sum(2,8); float y=sum(5.6,11.1); float z=sum(float(x),y,5); 当调用到重载函数时,编译器会根据实参的类型去对应地调用相应的函数。匹配过程按如下步骤进行: (1)如果有参数严格匹配(参数个数、类型完全一致)的函数,就调用该函数; (2)参数通过内部类型转换后匹配,调用该函数; (3)参数通过用户定义的类型转换寻求匹配。 因此,在定义重载函数时必须保证参数个数或类型不同,仅仅返回值类型不同是不行的。函数重载的好处在于,可以用相同的函数名来定义一组功能相同或类似的函数,程序的可读性增强。 3+5= 调用sum(3,5 ) 函数sum(3,5 ) return 8 2.2+5.6= 调用sum(2.2,5.6 ) 函数double sum(2.2,5.6 ) return 7.8 3.5+4+8= 调用 sum(3.5, 4, 8 ) 函数float sum(3.5, 4, 8 ) return 15.5 结束 8 7.8 15.5 【例4.16】 重载函数的应用。 #includeiostream.h sum(int a,int b) { return a+b; } double sum(double a,double b) { return a+b; } float sum(float a,float b,float c) { return a+b+c; } void main() { cout3+5=“ sum(3,5)endl; cout2.2+5.6= “ sum(2.2,5.6)endl; cout3.5+4+8=“ sum(3.5,4,8)endl; } 一般情况下,函数调用时的实参个数应与形参相同,但为了更方便地使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时实参个数可以与形参不相同。 缺省参数指在定义函数时为形参指定缺省值(默认值)。这样的函数在调用时,对于缺省参数,可以给出实参值,也可以不给出参数值。如果给出实参,将实参传递给形参进行调用,如果不给出实参,则按缺省值进行调用。 3.5.2 缺省变元 【例4.20】 缺省变元。 //文件名:Ex4_20.cpp #includeiostream.h void delay(int loops=5){ //延时函数,默认延时5个时间单位 for (; loops0; loops--); } void main(){ delay(3); cout“延时3个时间单位endl; delay(); //等同于delay(5) cout“延时5个时间单位endl; } 1 2 3 延时3个时间单位 1 2 3 4 5 延时5个时间单位 注意: 1、缺省参数的值在编译时确定,因此其值可以通过表达式给出,但表达式必须有意义;缺省值还可以是全局常量、全局变量,甚至可以通过函数调用给出;但不能通过局部变量给出,因为局部变量的值在执行时才有意义。 例如,缺省参数通过表达式给出: 函数声明:int fun1(a=rand()); 调用函数:fun1();/*参数a缺省,可由随机数发生函数当场产生,编译时定的是调什么函数。*/ 2、缺省参数可以有多个,但所有缺省参数必须放在参数表的右侧,即先定义所有的非缺省参数,再定义缺省参数。例如: int sum(int a,int b=100,int c=200); 这是因为在函数调用时,参数自左向右逐个匹配,当实参和形参个数不一致时只有这样才不会产生二义性。例如:如下分别调用函数sum(int,int,i
文档评论(0)