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.
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen