c++第一节之函数重载与缺省参数

来源:互联网 发布:知乎 冯大辉 离职 编辑:程序博客网 时间:2024/04/26 17:10

在C语言编程中,一般情况下一种函数对应一种功能,有时候 我们想实现一种功能,只是其中有一些细节不同却需要不同的函数来实现
例如实现两个数的加减运算 C语言编辑下

int    Add_1   ( int a,int b);double Add_2   ( double a,double b);long   Add_3   ( long a. long b);

如果这些细节较多,实现同一功能定义太多的函数名,会是编辑很不方便
在这种情况下就出现了函数重载概念
函数重载定义: 在c++中,允许同一函数名定义多个函数,这些函数的参数和个数可以不同,但必须实现相同或者相近的功能。
例如实现两个数的加减运算 C++编辑下

int    Add   ( int a,int b);double Add   ( double a,double b);long   Add   ( long a, long b);

我们看到一个函数名在c++中定义了三次,那编译器在编译器时怎么选择函数呢?系统会根据给出的实参的类型去调用参数类型相同的函数进行匹配。
—————其实重载函数在参数的个数上也可以不同

int    Add   ( int a,int b,int c);double Add   ( double a,double b);

函数在编辑时通过传参个数和类型也可以匹配到声明的函数

int Add (int);double Add(int);void Add (int);//参数个数和类型都相同,函数在调用时不知道调用哪一个而出现错误

因此重载函数的参数个数,参数类型,参数顺序必须至少一者不同,返回值可相同也可不相同

void fun (int a,int b);void fun (double a,double b);void fun (char a, char b);void fun (int a,double b);void fun (double b,int a);//都可形成重载 其中如果传参为(int a, char b)当没有这种类型的接收函数时,编译器会把char类型转化为int类型或者int类型转换为char类型再找到与之匹配的函数进行调用

函数重载注意事项:
函数必须实现相同或相似的功能
函数必须定义在全局域中
函数参数个数,参数类型,参数顺序必须至少一者不同
缺省参数
c++允许在函数定义时预先给定默认的形参值
当在函数调用时,如果已给出形参 值,就会按形参值进行调用函数,若没有给出形参值,则会已定义时的默认形参值进行调用函数。

void fun (int a=10)          void fun (int a=10){}                            {}int main()                   int main(){ int min = 3;               {  int min;    fun (min)                  fun (min)   return 0;                   return 0;       }                            }//调用左边时a会以3进行计算。调用右边时,a会以10进行计算
void fun(double x1, double x2, double x3, double x4=10);//参数赋初值只能从右往左依次进行void fun(double x1, double x2=10, double x3, double x4);void fun(double x1, double x2=10, double x3, double x4=10);//这两个都不正确

传参个数与函数参数不相同时:

void get_max(int a,int b,int c,int d=7);get_max(2,4,6) //此最后结果为 a=2,b=4,c=6,d=7;实参与形参的结合是从左到右的
0 0
原创粉丝点击