目录
一、引言
二、缺省参数的概念
三、缺省参数的使用
简单来说:
函数声明时缺省参数从右往左,函数调用传递实参时从左往右,如果声明和定义分离就只在声明处给缺省值
全缺省参数:
#include <iostream>
using namespace std;
// 全缺省
void Func1(int a = 10, int b = 20, int c = 30)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
}
int main()
{
Func1();//全缺省参数,调用时可以不给实参
Func1(1);
Func1(1, 2);
Func1(1, 2, 3);
return 0;
}
半缺省参数:
#include <iostream>
using namespace std;
// 半缺省
void Func2(int a, int b = 10, int c = 20)
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
}
int main()
{
//Func2(); //半缺省参数不能不给实参
Func2(100);
Func2(100, 200);
Func2(100, 200, 300);
return 0;
}
声明和定义分离:
#include <iostream>
using namespace std;
void Func2(int a, int b = 10, int c = 20);
//声明和定义分离时,只在声明给出缺省值
void Func2(int a, int b , int c )
{
cout << "a = " << a << endl;
cout << "b = " << b << endl;
cout << "c = " << c << endl << endl;
}
int main()
{
Func2(100);
Func2(100, 200);
Func2(100, 200, 300);
return 0;
}
四、注意事项
1. 谨慎使用缺省参数
虽然缺省参数可以简化函数调用,但过度使用可能会使函数的行为变得难以预测,尤其是在函数具有多个缺省参数时。因此,建议仅在确实需要时才使用缺省参数。
2. 明确文档说明
在函数的文档中清楚地说明每个参数的缺省值及其含义,有助于其他开发者理解函数的行为和预期结果。
3. 缺省参数与函数重载
当函数重载与缺省参数同时使用时,需要特别注意避免歧义。因为编译器可能会根据提供的参数数量选择最合适的函数重载版本,而不是简单地使用缺省参数。
4. 考虑使用函数重载或配置对象
对于具有多个可选参数的函数,可以考虑使用函数重载或配置对象(如结构体或类)来替代缺省参数。这样可以使函数的意图更加清晰,也更容易维护和扩展。