C++ 函数修改实参并设置缺省值

简述

在维护上古代码时,遇到这样一个问题 ,函数外部需要获取函数内部的一个值,但返回值已经被占用了,所以只能增加一个参数,但增加参数后,之前使用过此函数的地方,都需要修改,所以还需要设置一个缺省值。

解决方案一
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);
}

利用函数重载,在函数内部设置默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值