我知道我們不能通過引用返回局部變量,因爲它會超出範圍。儘管如此,我仍然有點困惑。例如下面的例子是合法還是會導致未定義的行爲?返回通過引用對象
classobject &function(classobject &obj) {
return obj;
}
我知道我們不能通過引用返回局部變量,因爲它會超出範圍。儘管如此,我仍然有點困惑。例如下面的例子是合法還是會導致未定義的行爲?返回通過引用對象
classobject &function(classobject &obj) {
return obj;
}
這絕對是很好,而實際上這是非常經常成員非如何操作< <等的實施,允許您鏈中的運營商。
要考慮的關鍵是對象的生命週期,如你所知,對象是通過引用傳入的,它必須超過函數調用。這使得返回相同參考的安全性。
這是合法的,用於例如cout<<
(儘管參數是*this
而不是顯式函數參數)。它返回對cout
的引用,允許cout<<"a"<<"b";
。
非成員運算符<<()通過引用獲取流對象,就像@ Veritas的示例一樣。 – polkadotcadaver
什麼都沒有消失。你讓他們回到他們給你的東西。在爲輸出和輸入始終提供課堂支持時發生。 – chris