在C语言中,函数没有指定参数列表,默认可以接收任意多个参数,但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。
缺省参数:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用函数时,如果没有指定实参则采用该默认值,否者使用指定的实参。
来看一段简单的代码:
#include<iostream>
using namespace std;
void test(int a = 1)
{
cout << a << endl;
}
int main()
{
test();
test(10);
return 0;
}
在第一个test函数中,输出的结果是1,第二个test函数输出结果是10。
而缺省参数是分为两类的,一类是全缺省,一类是半缺省。
同样用代码来演示一下:
首先是全缺省,全缺省参数所有参数都有默认值,如果没有手动传参,那么编译器会使用默认参数列表中的参数。但是这里值得注意的是,如果传参的时候只传了部分参数,那么该值会被从左至右匹配。
#include<iostream>
using namespace std;
void test(int a = 1,int b = 2, int c = 3)
{
cout << a << " " << b << " " << c << endl;
}
int main()
{
test();
test(10);
test(10, 20);
test(10, 20, 30);
return 0;
}
运行结果如下:
半缺省参数代码演示:
void test(int a ,int b = 2, int c = 3)
{
cout << a << " " << b << " " << c << endl;
}
void test1(int a, int b, int c = 3)
{
cout << a << " " << b << " " << c << endl;
}
其中test函数至少传一个参数,test1函数至少传两个参数,函数才可以正常运行。
并且这里需要注意的是:
带缺省值的参数必须放在参数列表的最后面。因为传参是从右向左的。
缺省参数不能同时在函数声明和定义中出现,只能二者留其一。
缺省值必须是常量或者全局变量。
C语言并不支持缺省。