9
std::string &func(int vlu)
{
    std::string str;
    str = std::to_string(vlu) + "something";

    return str;
}

上記の関数は明らかに安全ではありません。
以下は別のバージョンです。

std::string &func(int vlu)
{
    return std::to_string(vlu) + "something";
}  

いくつか質問が
あります。2 番目のバージョンのコンパイラ (gcc) は警告を表示しません。安全ですか?コンパイラ(または何か?)が一時変数を作成して、式の戻り値を保持すると思いますstd::to_string(vlu) + "something"。したがって、2 番目のバージョンも安全ではありません。そして私は正しいですか?

4

1 に答える 1