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

本文介绍C++中的函数重载概念及其使用方法,包括如何通过参数数量、类型及顺序的不同来区分同名函数,以及如何利用缺省参数简化函数调用。

在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;实参与形参的结合是从左到右的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值