Передача параметров по значению и по ссылке в C++ отличается следующим образом:
- Передача по значению. 13 Функция получает копию значения переменных и констант. 1 Любые изменения значения параметра внутри функции не отражаются на значении переменной-аргумента, так как параметр является локальной переменной. 2
- Передача по ссылке. 13 Передаётся ссылка на объект, через которую можно манипулировать самим объектом, а не просто его значением. 1 Фактический и формальный параметры указывают на один и тот же адрес памяти. 3 Любые изменения, внесённые в параметры внутри функции, напрямую отражаются в исходных значениях вне функции. 3
Передача по значению больше подходит для передачи в функцию небольших объектов, значения которых копируются в определённые участки памяти, которые потом использует функция. 1 Передача по ссылке больше подходит для передачи в функцию больших объектов, в этом случае не нужно копировать всё содержимое объекта в участок памяти, за счёт чего увеличивается производительность программы. 1