2015-12-03 72 views
1

我開始用C++,我不知道一件事...String作爲基準參數

這段代碼確定或有一些問題?

void foo(const std::string& data) 
{ 
    std::cout << data << std::endl; 
} 

foo("Hello World"); 

我真的不知道這一點,但我認爲調用函數時foo,臨時字符串變量將被創建,那麼它的引用將作爲參數傳遞,然後這個臨時變量被銷燬。所以函數foo將嘗試訪問未定義行爲的已刪除內存。我對嗎?

由於

回答

4

一個臨時的壽命通常延伸直到全部表達它在其中出現,這通常是一個分號的端。

充分體現在您的臨時需要的是foo("Hello World"),所以臨時串活了函數調用的整個過程,一切都很好。

相關問題