2015-06-17 119 views
2

即使我認爲它應該是這樣,我也不確定這是否正確。對參數對象的返回引用

std::string &MyClass::MyFunc(std::string &buffer, int nValue) 
{ 
    ... do something to buffer ... 

    return buffer; 
} 

當我返回傳入的對象的引用時,我認爲這是有效的,因爲生存期在父範圍內。 或者它可能是編譯器返回對某些內部狀態的引用?

我想使用這個的原因是,我不需要在函數內部分配一個對象,但仍然可以在嵌套函數調用中使用該對象。

即:

std::string v; 
int value; 

doSomething(MyFunc(v, value)); 
+0

是的,這是有效時,將正常工作就完成了。 – CoryKramer

+0

@CoryKramer:Arghargharghargharghargh y u在評論中回答ffs –

+0

@LightnessRacesinOrbit我不覺得我寫的東西足以回答問題。對於一個完整的答案,我通常會詳細說明遠遠超過「是的,沒關係」,但我今天早上有點懶惰:) – CoryKramer

回答

4

這完全沒問題。

事實上,它也什麼負荷過重外的類流運算符,賦值運算符,遞增/遞減等

std::ostream& operator<<(std::ostream&, T const&) 
{ 
    //... 
} 
+0

啊,是的,你是對的!我應該想到這一點,然後我可以自己查看它。 :) – Devolus

3

是的,這是好的。

如果你返回一個被破壞的東西的引用,例如函數中的局部變量,那麼你只會得到一個懸掛引用。

您正在返回對參數的引用,只要引用的內容不被其他內容破壞,就可以。

這正是你應該如何實現你想要的鏈式。

0

看起來正確。

像這樣傳遞引用就像傳遞一個普通指針一樣。