C++函数返回值传递

C++函数返回可以按值返回和按常量引用返回,偶尔也可以按引址返回。多数情况下不要使用引址返回。

使用按值返回总是很安全的,但是如果返回对象为类类型的,则更好的方法是按常量引用返回以节省复制开销。必须确保返回语句中的表达式在函数返回时依然有效。

const string& findMax(const vector<string>& arr)
{
    int maxIndex = 0;
    for (int i=1;i<arr.size();i++)
    {
        if (arr[maxIndex] < arr[i])
            maxIndex = i;
    }
    return arr[maxIndex];
}
const string& findMaxWrong(const vector<string>& arr)
{
    string maxValue = arr[0];
    for (int i=1;i<arr.size();i++)
    {
        if (maxValue < arr[i])
            maxValue = arr[i];
    }
    return maxValue;
}

findMax()是正确的,arr[maxIndex]索引的vector是在函数外部的,且存在时间鲳鱼调用返回的时间。

findMaxWrong()是错误的,maxValue为局部变量,在函数返回时就不复存在了。

猜你喜欢

转载自www.cnblogs.com/larry-xia/p/10263859.html