簡體   English   中英

字符串作為C ++函數中的返回值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM