C语言中,函数没有指定参数列表时,默认可以接收任意多个参数。而C++中,因为严格的参数类型检测,没有参数列表的函数默认为void,不接收任何参数。
缺省参数是在声明或定义函数时为函数的参数指定一个默认值。(相当于备胎哈哈哈)在调用函数时,如果有实参就调用指定的实参,没有指定的实参那么就采用该默认值。下面上实例
有指定实参
缺省参数又可以分为全缺省参数和半缺省参数
全缺省参数:
void test(int a = 1,int b=2,int c=3)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
那么如果我们调用函数没有全部传实参时又会怎样呢?
int main()
{
test(5,6);
}
可以看到参数列表从左往右依次接收了实参,这是因为编译时将其认为是半缺省
半缺省参数
void test(int a,int b=2,int c=3)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl;
}
带缺省值的参数必须放在参数列表的最后面,这涉及到了参数的调用约定(点击查看参数的调用约定)
注意:函数的声明和定义不能同时带有缺省值,建议放在函数声明部分,用户可以在看到声明时知道其是缺省的(用户看不到源文件)