Est-il temps d'abandonner le passage de const std::string& dans les paramètres de fonctions ?
Bonjour à tous ! Je suis débutant en C++ et je vois constamment dans les vieux tutoriels et articles le conseil de passer les chaînes aux fonctions comme const std::string&. Mais récemment, je suis tombé sur une discussion où l'on disait qu'en C++11 et plus récent, ce n'est plus une bonne pratique. Apparemment, à cause de la move semantics, il est plus efficace de passer les chaînes par valeur plutôt que par référence constante.
Je suis complètement perdu. Voici un exemple de mon code :
```cpp
void processData(const std::string& name) {
// ... un travail avec name, mais pas de copie
std::cout << name << std::endl;
}
void storeData(const std::string& name) {
// Ici je veux sauvegarder name dans un membre de la classe
m_name = name; // est-ce une copie ?
}
```
Le premier cas — simple lecture de la chaîne. Le second — sauvegarde dans un champ de l'objet. Est-ce que const std::string& est vraiment obsolète ? Quand faut-il l'utiliser, et quand est-il préférable de passer la chaîne par valeur (std::string) ? Ou peut-être faut-il utiliser std::string_view ? Je vous prie d'expliquer simplement, avec des exemples, quelle option est la plus optimale dans
No answers yet.
Connectez-vous pour laisser une réponse