Il y aura un problème si votre code est comme:
std::string& MyFunc()
{
std::string mystring("test");
return mystring;
}
Donc, la façon dont vous avez écrit que c'est OK. Juste un conseil, si vous pouvez construire la chaîne comme celle-ci, je veux dire, vous pouvez le faire en une seule ligne, il est parfois préférable de faire comme ceci:
std::string MyFunc()
{
return "test";
}
Ou si c'est plus "compliqué", par ex:
std::string MyFunct( const std::string& s1,
const std::string& s2,
const char* szOtherString )
{
return std::string( "test1" ) + s1 + std::string( szOtherString ) + s2;
}
Cela vous donnera une indication pour le compilateur de faire plus d'optimisation, de sorte qu'il pourrait le faire un de moins copie de votre chaîne (RVO).