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.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage