[英]string as a return value in c++ function
這是一個基本問題,但我對此並不完全理解。 當我有一個像這樣的功能:
string func(){
string result;
result = "resultString";
return result;
}
這樣可以還是字符串結果僅是局部變量(可以超出范圍)?
如果可以,為什么? 這是價值回報嗎?
按值返回c ++中的哪些類型,按引用返回什么?
這樣可以還是字符串結果僅是局部變量?
很好 盡管可能會受到NRVO的限制,但會返回一個值。
如果可以,為什么? 這是價值回報嗎?
是。 您將string
寫為返回類型,這意味着一個值。
按值返回c ++中的哪些類型,按引用返回什么?
在C ++中,您可以對此進行很好的控制。 string f();
表示返回string
類型值的函數。 string& f();
返回對該值的引用。
如果可以,為什么? 這是價值回報嗎?
作為先前答案的補充,我想說結果是一個局部變量。 由於func()原型指定返回是按值而不是引用,因此c ++編譯器實際上將調用std :: string復制構造函數以使用結果局部變量的副本來初始化func()返回值(請注意,如果沒有提供副本Constructo,您的代碼,C ++編譯器將創建一個,僅實現淺拷貝)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.