В каких ситуациях предпочтительнее вернуть объект, чем просто изменить объект, переданный этой функции по ссылке? Как я узнаю, какой из них выбрать?
На самом деле, вопрос заключается в том, есть ли вещи, которые я бы не смог сделать без возможности вернуть объект из функции, а вместо этого изменить только объекты, переданные по ссылке.
Основное прагматическое различие между
TYPE function () ;
а также
void function (TYPE &value) ;
является то, что первое может быть использовано в выражениях.
a = 10 * function () ;
if (function ())
{
}
Это главное соображение дизайна.
Помимо этого, я должен был бы получить мнение. Я собираюсь придерживаться объективной разницы.
Это очень просто …
Возврат по «значению»:
— если вы хотите копию объекта с текущим состоянием объекта;
— И инстант важен, если состояние исходного объекта изменится последним;
Вернуться по ссылке:
— если вы хотите иметь правильное состояние, когда объект обновляется другими;
— если вы хотите изменить состояние объекта, и другие должны быть в курсе этих изменений;
Это самые важные причины.
Но существует особый вариант использования, который вы должны знать:
По техническим причинам текущие языки обычно быстрее, когда вы возвращаетесь по ссылке.
Если скорость является требованием, вы также должны учитывать это ограничение, чтобы принять лучшее решение.
Но фундаментальное решение о том, как вы хотите иметь дело с состоянием объекта.
Возврат чего-либо является простым вариантом, но вы будете использовать ссылку, если что-то говорит против этого. Одна из причин заключается в том, что у вас есть что-то еще для возвращаемого значения, например, код успеха / неудачи. Другая причина в том, что в стеке он будет выглядеть большим, а вы — на крошечном компьютере. Тогда, конечно, вы можете захотеть изменить существующую переменную или структуру вместо создания новой. Я думаю это все.
Я не знаю ничего, что вы не можете сделать, передав ссылку или указатель для получения результата.