這是一個基本問題,但我不完全明白這一點。 當我有這樣一個功能:字符串作爲C++函數的返回值
string func(){
string result;
result = "resultString";
return result;
}
這是正確的或者是字符串結果只有一個局部變量(可以走出去的範圍)?
如果可以,爲什麼?這是價值回報嗎?
C++中的哪些類型是通過值返回的?
這是一個基本問題,但我不完全明白這一點。 當我有這樣一個功能:字符串作爲C++函數的返回值
string func(){
string result;
result = "resultString";
return result;
}
這是正確的或者是字符串結果只有一個局部變量(可以走出去的範圍)?
如果可以,爲什麼?這是價值回報嗎?
C++中的哪些類型是通過值返回的?
這是好的還是字符串結果只是一個局部變量?
這很好。返回的值雖然可能受NRVO約束。
如果可以,爲什麼?這是價值回報嗎?
是。你寫了string
作爲返回類型,這意味着一個值。
C++中的哪些類型是通過值返回的?
在C++中,你可以很好地控制它。 string f();
表示返回類型爲string
的值的函數。 string& f();
返回對此值的引用。
Google for:[RVO](https://en.wikipedia.org/wiki/Return_value_optimization),移動語義並按值返回 –
你是什麼做得很好。在C++中,所有東西都是以價值回報的。 –
@LukePark除了返回參考。 – juanchopanza