Рассмотрим эту функцию:
Thing func(){
return something;
}
Каждый вызов этой функции, копия something
производится и передается вызывающему.
Мой вопрос: почему бы не просто сделать это (каждый раз, когда я хочу что-то вернуть по значению)?
const Thing& func(){
return something;
}
Таким образом, мы не рискуем копировать something
без повода для этого. Если клиенту нужно только "читать" из something
, но не "писать" ему, ссылка на const может сделать именно это. И если клиенту нужна копия, он может просто назначить ссылку на константу переменной, например:
Thing thing = func(); // the object is passed by const reference, and then copied.
Так есть ли когда-либо причина просто вернуться по значению?
Кстати, это не то, что меня так волнует оптимизация, просто я не вижу причины когда-либо возвращаться просто по значению.
Последующий вопрос: читая ответы, я понимаю, что для каждого метода есть плюсы и минусы. Есть ли по умолчанию? Например. msgstr "по умолчанию возврат по значению"? Или это чисто основано на конкретном случае?