生活中备胎这个概念相信大家都很熟悉,不管是字面的意义,还是“备胎”这个词的引申意,其实,不止是在生活中,在我们的C++中,“备胎”也是存在的,这就是我们今天的主题——缺省参数,那么为什么说它是C+中的“备胎”呢,相信大家看了这篇文章就会一目了然了。
缺省参数
缺省参数的概念
缺省参数是指声明或定义函数时为函数的参数指定一个默认值。而在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
看了缺省参数的概念相信大家对于它为什么叫C++里的备胎已经有一定的认识了,下面通过这个例子来加深大家的印象。
例子:
#include <iostream>
using namespace std;
void Function(int a = 1)
{
cout << a << endl;
}
int main()
{
Function();
Function(20);
system("pause");
}
运行结果:
上面的代码的运行结果中,第一个是调用Function()函数的结果,这里我们没有给指定的参数,所以输出的结果是0,第二个我们调用的是Function(10)这个函数,因为我们给了实参,所以输出的是10。
缺省参数的分类
全缺省参数
顾名思义,就是在声明或者定义一个函数的时候,为函数的所有参数都指定一个默认值。
例子:
void Function(int a = 10, int b = 30, int c = 60)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
半缺省参数
参照全缺省参数的定义,半缺省参数就是指在声明或者定义一个函数的时候,不为函数的所有参数都指定一个默认值。
例子:
void Function(int a , int b = 30, int c = 60)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
使用缺省参数的注意事项
1.半缺省参数必须从右往左依次给出,不能间隔着给出
例如:
void Function(int a ,int b = 20,int c )
{
}//错误
2.缺省参数不能在函数声明和定义中同时出现
因为如果声明与定义位置同时出现,而恰好两个位置提供的值不同,此时编译器就无法确定到底该用那个缺省值
例如:
//a,h
void Function(int a = 10);
//a.c
void Function(int a = 50)
{
}
3.缺省值必须是常量或者全局变量
int d = 20;
void Function(int a = d ,int b = 20,int c )
{
}//错误
4.C语言不支持