码迷,mamicode.com
首页 > 编程语言 > 详细

C++函数返回值传递

时间:2019-01-13 21:13:08      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:dex   value   ons   好的   必须   col   div   pre   code   

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为局部变量,在函数返回时就不复存在了。

C++函数返回值传递

标签:dex   value   ons   好的   必须   col   div   pre   code   

原文地址:https://www.cnblogs.com/larry-xia/p/10263859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!