Каков наилучший способ вернуть строку в C ++?
Мой вопрос прост: если у меня есть некоторый класс Man, и я хочу определить функцию-член, которая возвращает имя человека, какой из следующих двух вариантов я предпочту?
Первый:
<code>string name(); </code>
Во-вторых:
<code>void name(/* OUT */ string &name); </code>
Первый вариант является неэффективным, потому что он делает ненужные копии (локальная переменная -> возвращаемое значение -> переменная в левой части присваивания).
Второй вариант выглядит довольно эффектно, но заставляет плакать
<code>string name; john.name(name); </code>
вместо простого
<code>string name(john.name()); </code>
Итак, какой вариант я предпочитаю и каков правильный компромисс между эффективностью и удобством / удобочитаемостью?
Заранее спасибо.