Avatar ·

Ist es Zeit, die Übergabe von const std::string& in Funktionsparametern aufzugeben?

Hallo zusammen! Ich bin neu in C++ und sehe ständig in alten Lehrbüchern und Artikeln den Rat, Strings als const std::string& an Funktionen zu übergeben. Aber kürzlich bin ich auf eine Diskussion gestoßen, in der gesagt wurde, dass dies in C++11 und neuer nicht mehr die beste Praxis sei. Angeblich sei es aufgrund der move-Semantik effizienter, Strings by value statt als const reference zu übergeben. Ich bin total verwirrt. Hier ist ein Beispiel meines Codes: ```cpp void processData(const std::string& name) { // ... irgendeine Arbeit mit name, aber keine Kopie std::cout << name << std::endl; } void storeData(const std::string& name) { // Hier möchte ich name in einem Klassenmember speichern m_name = name; // ist das eine Kopie? } ``` Der erste Fall – nur Lesen des Strings. Der zweite – Speichern in einem Objektfeld. Ist const std::string& wirklich veraltet? Wann sollte man es verwenden, und wann ist es besser, den String by value (std::string) zu übergeben? Oder sollte man vielleicht std::string_view verwenden? Ich bitte um eine einfache Erklärung mit Beispielen, welche Variante optimaler ist.