Avatar ·

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