Возврат против использования ссылочного параметра - программирование
Подтвердить что ты не робот

Возврат против использования ссылочного параметра

Это действительно подталкивает меня, исходя из фона С#.

Иногда я вижу функции, написанные следующим образом:

int computeResult();

Это то, к чему я привык. Но потом я вижу, что они написаны так:

void computeResult(int &result);

Я нахожу это странным. Каковы преимущества второго метода в первом, если таковые имеются? Должно быть что-то, потому что я все время вижу.

4b9b3361

Ответ 1

Существуют две общие причины для таких неконстантных эталонных параметров:

  • Вам может потребоваться несколько параметров "out" в функции, и с помощью эталонного параметра (s) это разрешено.

  • Ваш объект может быть дорогим для копирования, и поэтому вы передаете ссылку, которая будет мутирована, а не возвращать объект, который может быть скопирован как часть процесса возврата. Объекты с дорогостоящей копией могут включать стандартные контейнеры (например, vector) и объекты, которые управляют памятью кучи, где будет выполняться последовательность распределения-освобождения-освобождения. Обратите внимание, что компиляторы действительно хорошо оптимизируют эти копии, когда это возможно, и поэтому эта причина имеет меньше импорта, чем она использовалась.

EDIT: я должен пояснить, что даже в С++ конкретный пример, который вы предоставили с одним параметром Reference, является довольно нетипичным. В таких случаях возвращаемое значение почти всегда предпочтительнее.