Я обычно возвращаю const &, если не могу. QBziZ приводит пример того, где это происходит. Конечно, QBziZ также утверждает, что std :: string имеет семантику копирования при записи, что сегодня редко встречается, так как COW требует много накладных расходов в многопоточной среде. Возвращая const & вы возлагаете бремя на вызывающего, чтобы сделать правильную вещь со строкой на конце. Но поскольку вы имеете дело с кодом, который уже используется, вы, вероятно, не должны его менять, если только профилирование не покажет, что копирование этой строки вызывает серьезные проблемы с производительностью. Тогда, если вы решите изменить его, вам нужно будет тщательно проверить, чтобы убедиться, что вы ничего не сломали. Надеюсь, другие разработчики, с которыми вы работаете, не делают отрывочных вещей, как в ответе Димы.