ch5-3 函数重载和默认参数.ppt

ch5-3 函数重载和默认参数.ppt

ID:48793838

大小:242.50 KB

页数:25页

时间:2020-01-25

ch5-3 函数重载和默认参数.ppt_第1页
ch5-3 函数重载和默认参数.ppt_第2页
ch5-3 函数重载和默认参数.ppt_第3页
ch5-3 函数重载和默认参数.ppt_第4页
ch5-3 函数重载和默认参数.ppt_第5页
资源描述:

《ch5-3 函数重载和默认参数.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、五、函数重载[functionoverloading]六、默认参数[defaultargumentvalues]第8章函数1五、函数重载[functionoverloading](C++特有)1.重载函数与名称细分函数重载是C++新引进的。在同一作用范围中为多个函数定义(其功能通常是相近的)指定一个共同的函数名,委托编译器根据每一个单独函数的形参个数、类型和位置的差异在幕后进行名称细分并选择合适的函数调用匹配的现象称为函数重载。重载函数是函数名相同入口参数类型、位置或个数有所不同的多个函数或其中的一个函数。2函数是有类型的,函数的类型不单单指函数的返回类型,函数的

2、形参列表构成的入口类型是函数重载意义上更重要的类型,编译器根据函数的入口类型细分重载函数并由此确定每一个函数定义代码段入口地址的唯一性。系统不根据函数的返回类型确定函数重载的调用匹配,也无法区别引用形参和数值形参在重载意义上的差异。实际上对于单独调用的同名函数,程序员自身也难以区别调用的是哪个函数版本。3例如:如下两个函数版本:intf(intk){returnk;}//int型的数值入口,int型的数值返回int*f(int&r){return&r;}//int&型的引用入口,int*型的数值返回voidmain(void){intn=2;//定义int型的变量

3、nf(n);//函数调用是模糊的}//编译器无法鉴别函数调用f(n)匹配上面函数中的哪个版本。对于上面两个重载函数f只有定义没有调用并不出现ambiguouscalltooverloadedfunction提示,也就是说引用形参和数值形参可以用于名称细分,但不足以解决调用点处的模糊性。4typedef声明并未引进新的数据类型,只是为已经存在的类型提供一个类名同义词,因此不构成名称细分的独立条件。例如:typedeffloatreal;floatfunct(realx){returnx+1;}realfunct(floaty){returny-1;}编译器不对上面的

4、funct函数进行名称细分,两者拥有相同的类型参量。5[例]参数类型和位置不同的重载函数#includelong&max(long&s,long&l){printf("max(long&);");returns>l?s:l;}double&max(double&s,double&l){printf("max(double&);");returns>l?s:l;}longmin(shorts,longl){printf("min(short,long);");returns

5、f("min(long,short);");returns

6、(long,short);],这一对函数完成相同的功能不同的只是将两个形参的位置互换。在函数调用min(s,l)匹配的是函数min(short,long)。函数max(long&,long&)采用的是引用输入输出,函数对引用形参的操作就是对相关变量的直接操作。变量l在函数调用:[max(L,l)--;]后其值减少一个单位,因此在函数min(s,l)表达式的结果为min=k。82.函数虚实结合类型匹配在同一作用范围中函数voidvf(inta,int*p){p++;}与函数voidvf(intb,int*q){b++;}视为相同的函数,两者具有同样的参量类型列表vo

7、idvf(int,int*)。函数重载时,编译器根据函数的入口参数类型对同名函数进行名称细分,重载函数的名称细分之后依存在具体函数代码选取的问题,选择原则是根据调用函数的实参的数据类型对当前范围中的函数进行形参的最佳匹配。如果找到一个恰当的函数匹配,就启动该函数的入口地址。重载函数必须在形参类型、个数或参数位置顺序上有所区分。9函数在调用时本身就存在强制的或隐含的类型转换即从实参类型到形参类型的转换,重载函数也不例外。编译器幕后为重载函数的参量建立一个备用函数集,备用函数是在某个位置实参可以转换为形参类型的函数。如果备用函数集的交集不是唯一的,则函数重载就是有二义

8、的,从而函

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

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

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