2016-08-30 56 views
-2

考慮以下一塊程序:C++接力方案沒有給出預期結果

class cls 
{ 
    int vi; 
public: 
    cls(int v=37) 
    { 
     vi=v; 
    } 
    friend int& f(cls); 
}; 

int& f(cls c) 
{ 
    return c.vi; 
} 

int main() 
{ 
    const cls d(15); 
    f(d)=8; 
    cout<<f(d); 
    return 0; 
} 

當運行它,輸出是

但我不不明白爲什麼15,因爲我認爲它應該輸出8,因爲

F(d)= 8

功能,從我的理解,使c.vi = 8,但我可能是錯的,功能可能不完全是另一回事,所以我接着問,什麼是目的或是什麼

friend int & f(cls);

功能嗎?

+0

@gsamaras我編輯它更具體。 –

回答

3

你的程序有未定義的行爲 - 你正在返回一個函數的局部變量的懸掛引用(參數也是一個局部變量)。

相關問題