Was ist der beste Weg, um einen String in C ++ zurückzugeben?
Meine Frage ist einfach: Wenn ich eine Klasse Man habe und eine Mitgliedsfunktion definieren möchte, die den Namen des Mannes zurückgibt, welche der folgenden beiden Varianten soll ich bevorzugen?
Zuerst:
<code>string name(); </code>
Zweite:
<code>void name(/* OUT */ string &name); </code>
Die erste Variante ist ineffizient, weil sie unnötige Kopien erstellt (lokale Variable -> Rückgabewert -> Variable im linken Teil der Zuweisung).
Die zweite Variante sieht ziemlich effizient aus, bringt mich aber zum Schreiben
<code>string name; john.name(name); </code>
statt einfach
<code>string name(john.name()); </code>
Welche Variante soll ich also bevorzugen und was ist der richtige Kompromiss zwischen Effizienz und Benutzerfreundlichkeit / Lesbarkeit?
Danke im Voraus.