簡體   English   中英

首先發生什么,隱式轉換為返回值或破壞局部變量?

[英]What happens first, implicit conversion to return value or destruction of local variable?

我只是碰到了下面的代碼,看起來像我一樣腥(詳細遺漏以保護無辜者):

std::string MakeString()
{
    char buf[12] = { 0 };
    return &buf[0];
}

這樣可以還是不安全? 是否保證在buf超出范圍之前創建std :: string?

你寫的相當於:

std::string MakeString()
{
    char buf[12] = { 0 };
    return buf;
}

並始終保證此代碼是安全的。 實際上,這種情況與通過復制返回值的任何函數沒有太大區別。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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