lundi 29 octobre 2018

c++ return a std::string &

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

    return str;
}

the function above is unsafe clearly.
following is another version.

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

I have some questions:
the compiler(gcc), in the second version, doesn't give me any warning. does it safe?
I just think that compiler(or something?) will create a temporary variable to hold the return of expression std::to_string(vlu) + "something". so the second version is unsafe too. and I right?

Aucun commentaire:

Enregistrer un commentaire