简述
在维护上古代码时,遇到这样一个问题 ,函数外部需要获取函数内部的一个值,但返回值已经被占用了,所以只能增加一个参数,但增加参数后,之前使用过此函数的地方,都需要修改,所以还需要设置一个缺省值。
解决方案一
bool func(int &i = 10)
{
i = 5;
return true;
}
这种方案并不可行,函数中的默认值10
为常量,而 i
并非常引用。
如果将 i
改为常引用,则不能修改i
,所以外部也获取不到函数内部的值了,所以此方法不可用
解决方案二
bool func(int *i = nullptr)
{
int defaultValue = 10;
//int &num = i ? *i : defaultValue; //可读性低
//num = 5;
if(!i)
i = &defaultValue;
*i = 5;
return true;
}
利用指针修改外部值,在函数内部设置默认参数
解决方案三
bool func(int &i)
{
i = 5;
return true;
}
bool func()
{
int defaultValue = 10;
return func(defaultValue);
}
利用函数重载,在函数内部设置默认值。