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);
}

利用函數重載,在函數內部設置默認值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章