¿Cuál es la mejor manera de devolver una cadena en C ++?
Mi pregunta es simple: si tengo alguna clase Hombre y deseo definir una función miembro que devuelva el nombre de hombre, ¿cuál de las siguientes dos variantes preferiré?
Primero:
<code>string name(); </code>
Segundo:
<code>void name(/* OUT */ string &name); </code>
La primera variante es un poco ineficiente porque hace copias innecesarias (variable local -> valor de retorno -> variable en la parte izquierda de la asignación).
La segunda variante parece bastante eficiente pero me hace llorar para escribir
<code>string name; john.name(name); </code>
en lugar de simple
<code>string name(john.name()); </code>
Entonces, ¿qué variante prefiero y cuál es la compensación adecuada entre eficiencia y conveniencia / legibilidad?
Gracias por adelantado.