话不多说,我们直接开始正题,满满的干货啊兄弟们。
1.缺省参数的概念
缺省参数的概念是什么呢?
我们在定义一个函数时,可以给予形参一个缺省值,使得在调用该函数时,如果我们没有给予参数值,也可以正常使用,也就是形参我们需要传一个参数, 即使我们不传,也可以是正常使用的,具体如下所示:
#include<iostream>
using namespace std;
int Add(int a = 3 , int b = 5)
{
return a+b;
}
可以看到我们函数中已经给我们的a和b一个参数了,如果我们不传参呢,就会默认a为3,b为5.
这就是这个缺省参数的概念,
当然在我们的缺省参数中还有几个概念,接下来给大家介绍一下。
部分缺省:
#include<iostream>
using namespace std;
int Add(int a, int b = 20)
{
return a+b;
}
可以看到,上面的定义呢,就是我们的部分缺省,我们只给b一个值,并没有给a一个值,所以我们还是要传一个a给予我们的函数的,这个概念就是我们的部分缺省, 也叫半缺省参数,
需要注意的是:
1.半缺省参数,必须是从左往右依次来给我们的值的,不能间隔着给,会出现编译器懵逼的状态。
2.缺省参数不能在函数定义和声明中同时出现,如下所示:
// add.h
int Add(int a = 10 , int b = 20)
//add.cpp
int Add(int a =5, int b = 3)
{
}
如上所示,如果定义和声明同时出现的一个参数,值是不同的,那么编译器也会懵逼,不知道使用哪个缺省参数了、
3.缺省参数,必须是常量或者全局变量。
4.C语言的编译器是不支持缺省参数的。
OK了家人们,下面我们来看下一个知识点:
函数重载:
函数重载的概念是这样的:在C++中,允许在同一作用域出现几个功能类似的同名函数,这些同名函数的形参列表(参数个数,或类型,或类型顺序)不同,通常用来处理实现功能类似,数据类型不同的情况。
下面来看看参数类型不同的情况:
#include<iostream>
using namespace std;
//参数类型不同
int Add(int a,int b)
{
cout<<"int Add(int a,int b)"<<endl;
return a+b;
}
double Add(double a,double b)
{
cout<<"double Add(double a,double b)"<<endl;
return a+b;
}
这个是参数类型不同的情况,还有以下情况:
#include<iostream>
using namespace std;
//参数个数不同
void fun()
{
cout<<"f()"<<endl;
}
void fun(int a)
{
cout<<"fun(int a)"<<endl;
}
以上则是参数个数不同的情况,还有一种情况是这样的:
#include<iostream>
using namespace std;
//参数类型顺序不同
void fun(int a,char b)
{
cout<<"fun(int ,char)"<<endl;
}
void fun(char a, int b)
{
cout<<"fun(char,int)"<<endl;
}
这个是参数类型顺序不同的情况,这些都是函数重载的一些基本情况,今天的干货就先介绍到这里,喜欢的可以点赞一下,谢谢大家。