1. 程式人生 > >C++函式返回值傳遞

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為區域性變數,在函式返回時就不復存在了。