1、缺省函数的概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。
我们举个简单的栗子:
void Func(int a = 0)
{
cout<<a<<endl;
}
int main()
{
Func(); // 没有传参时,使用参数的默认值
Func(10); // 传参时,使用指定的实参
return 0;
}
简单来说:缺省函数就是给参数一个默认值,当我们引用函数的时候没有传递实参时,就将默认值作为参数传进函数;如果传递了一个具体的实参时,我们就用传递的实参作为参数进入函数。
2、缺省函数分类:全缺省与半缺省
- 全缺省函数
还是一样,先举个栗子:
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
- 半缺省函数
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<<a<<endl;
cout<<"b = "<<b<<endl;
cout<<"c = "<<c<<endl;
}
首先观察一下二者的区别:在全缺省函数中,每一个形参都给了一个缺省值,而在半缺省函数中,a并没有给出他的缺省值。所以,二者的区别就在于是否每一个参数都有缺省值。
注意:
- 半缺省参数必须从右往左依次给出,不能间隔着给出。
void func(int a, int b = 20, int c = 10) { cout<<"a = "<<a<<endl; cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl; } int main() { func(1); func(1,2); func(1,2,3); return 0; }如果从左往右依次给出,那么传参将不明确,因为传参就是从左往右的顺序,如main函数中的第三行,分别是a=1,b=2,c=3。若是在原缺省函数中给出的是int a = 20, int b = 10, int c,那么将传参不明,故不可从左往右以及间隔给出。
- 缺省函数不能在函数声明和定义中同时出现。
//a.h
void Func(int a = 10);
//a.cpp
void Func(int a = 20)
{}
//注意:如果声明和定义同时出现,且恰巧两个位置提供的值不同,
//那么编译器将无法确定使用哪一个缺省值。
3.缺省值必须是常量或者全局变量。
4.C语言不支持缺省函数(编译器不支持)
以上就是关于C++缺省函数的全部内容,如果有错误或其它问题,请各位大佬同行斧正。
缺省函数允许在声明函数时为参数设定默认值,当调用函数时不提供实参时会使用这些默认值。全缺省函数每个参数都有默认值,而半缺省函数部分参数有默认值,但半缺省参数必须从右往左设置。C语言不支持缺省函数。注意,缺省值应为常量或全局变量,且声明和定义中的默认值需一致。
3539

被折叠的 条评论
为什么被折叠?



