Comment retourner une chaîne de caractère en évitant autant que possible la copie ?
Bonjour à tous,
Je me retrouve une nouvelle fois face à un code contenant des fonctions retournant des chaînes de caractères. Malheureusement (pour moi et surtout pour les performances) celles-ci sont retournées par copie. Un des soucis qui m'empêche de retourner une référence est le fait qu'il existe des cas où ces fonctions peuvent retourner des chaînes vides : return "";.
Quelles solutions avez-vous pour éviter des copies ?
Mes solutions :
- passer la chaîne de caractère par référence en argument à la fonction. Point noir : modification lourde du code existant ;
- utiliser une chaîne vide statique, qui ne sera pas détruite, même lorsque retournée par la fonction.
Exemple de code problématique :
Code:
1 2 3 4 5 6 7
| std::string myFct()
{
if (test)
return member;
return "";
} |