Qual é a melhor maneira de retornar string em C ++?
Minha pergunta é simples: se eu tenho alguma classe Man e eu quero definir a função de membro que retorna o nome do homem, qual das duas variantes a seguir devo preferir?
Primeiro:
<code>string name(); </code>
Segundo:
<code>void name(/* OUT */ string &name); </code>
A primeira variante é ineficiente porque faz cópias desnecessárias (variável local -> valor de retorno -> variável na parte esquerda da atribuição).
A segunda variante parece bastante eficiente, mas me faz chorar para escrever
<code>string name; john.name(name); </code>
em vez de simples
<code>string name(john.name()); </code>
Então, qual variante eu preferiria e qual é o trade-off adequado entre eficiência e conveniência / legibilidade?
Desde já, obrigado.