1. 缺省参数概念
1.1 缺省参数是声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
void fun1(int a)
{
cout << a << endl;
}
void fun2(int a = 10)
{
cout << a << endl;
}
void test()
{
fun1(100); //100
fun2(); //10,没有传参时,使用参数的默认值
fun2(20); //20,传参时,使用指定的实参
}
2. 缺省参数分类
2.1 全缺省参数:
void fun3(int a = 1, int b = 2, int c = 3, int d = 4)
{
cout << a << " " << b << " " << c << " " << d << endl;
}
void test()
{
//接收参数的顺序是从左向右
fun3(10, 20); //10 20 3 4
fun3(10, 20, 30, 40); // 10 20 30 40
}
2.2 半缺省参数
半缺省:部分参数设置默认值
//设置参数默认值必须从右向左依次连续赋值,中间不能有间隔
void fun4(int a, int b = 1, int c = 2)
{
cout << a << " " << b << " " << c << endl;
}
//以下三个都不符合规范
//void fun5(int a = 1, int b, int c = 2){}
//void fun6(int a, int b = 1, int c){}
//void fun7(int a = 1, int b = 2, int c){}
3. 注意
3.1 半缺省参数必须从右往左依次来给出,不能间隔着给。
3.2 缺省参数不能在函数声明和定义中同时出现。
//声明和定义,只能有一个地方设置参数默认值,不能同时设置
//函数声明
int fun6(int a = 10);
//函数定义
int fun6(int a)
{
cout << a << endl;
}
3.3 缺省值必须是常量或者全局变量。
4. C语言不支持(编译器不支持)。