2013-12-12 124 views
2

我知道我們不能通過引用返回局部變量,因爲它會超出範圍。儘管如此,我仍然有點困惑。例如下面的例子是合法還是會導致未定義的行爲?返回通過引用對象

classobject &function(classobject &obj) { 
return obj; 
} 
+3

什麼都沒有消失。你讓他們回到他們給你的東西。在爲輸出和輸入始終提供課堂支持時發生。 – chris

回答

6

這絕對是很好,而實際上這是非常經常成員非如何操作< <等的實施,允許您鏈中的運營商。

要考慮的關鍵是對象的生命週期,如你所知,對象是通過引用傳入的,它必須超過函數調用。這使得返回相同參考的安全性。

0

這是合法的,用於例如cout<<(儘管參數是*this而不是顯式函數參數)。它返回對cout的引用,允許cout<<"a"<<"b";

+0

非成員運算符<<()通過引用獲取流對象,就像@ Veritas的示例一樣。 – polkadotcadaver