2010-08-10 69 views
1

我有一個函數定義了在CStringW中鍵入的局部變量,是否可以通過值將該對象返回給調用者,而不是通過引用安全?將本地CStringW返回給調用者是否安全?

+0

反過來實際上是不安全的;不要返回一個局部變量的引用,因爲當它超出範圍時,你的引用已經死亡。 – GManNickG 2010-08-10 02:57:56

回答

2

是的,應該沒問題。 CString內部使用帶引用計數的緩衝區並進行寫入時複製,因此,當您創建CString的副本,然後銷燬原始對象時,所有內容都應該「正常工作」。

1

我相信CString是來自MFC,而不是STL,所以你可能想要改變你的標籤。

如果你從一個函數返回一個局部變量,它是安全的返回值,但不是可以安全地通過引用返回。按值返回有效地將字符串複製給調用者。通過引用返回給調用者一個對函數返回時銷燬的局部變量的引用 - 所以調用者永遠不會使用它,並且返回的引用總是無效的。

相關問題