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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
std::string myFct()
{
    if (test)
        return member;
 
    return "";
}