Jaki jest najlepszy sposób na zwrócenie ciągu znaków w C ++?
Moje pytanie jest proste: jeśli mam jakąś klasę Man i chcę zdefiniować funkcję składową, która zwraca imię człowieka, który z następujących dwóch wariantów powinienem preferować?
Pierwszy:
<code>string name(); </code>
Druga:
<code>void name(/* OUT */ string &name); </code>
Pierwszy wariant jest nieco nieefektywny, ponieważ tworzy niepotrzebne kopie (zmienna lokalna -> wartość zwracana -> zmienna w lewej części przypisania).
Drugi wariant wygląda całkiem wydajnie, ale sprawia, że płaczę, by pisać
<code>string name; john.name(name); </code>
zamiast prostego
<code>string name(john.name()); </code>
Więc jaki wariant powinienem preferować i jaki jest właściwy kompromis między wydajnością a wygodą / czytelnością?
Z góry dziękuję.