Ответ 1
Если, функция вернула ссылку (которой это не так), то вам может потребоваться присвоить возвращаемое значение ссылке, чтобы сохранить "актуальную" "с любыми изменениями в этом объекте. Возвращенная ссылка должна быть связана с объектом с продолжительностью жизни, который был расширен за пределами функции.
Или (если возвращаемая ссылка не была - const
), потому что вы хотели сохранить ссылку на объект, чтобы изменить его как последующую точку. (Если вы хотите немедленно изменить его, вы сделаете это напрямую, нет необходимости хранить ссылку.)
Поскольку функция возвращает значение, которое вы могли бы присвоить ей ссылку const
(ссылка на const
была бы незаконной) и продлить время жизни объекта на время жизни ссылки. Однако эффект будет точно таким же (const
в стороне) как сохранение значения в объекте напрямую.
Любая мысль о том, что она может быть менее эффективной, может оказаться необоснованной, и вы можете квалифицировать объект с помощью const
, если хотите. (Большинство компиляторов исключают подразумеваемые временные и создают возвращаемое значение в инициализированном объекте.)
Когда тип объекта возвращается из функции по значению, он должен быть скопирован, поэтому это не является основанием для использования ссылки из-за опасения, что это не так.