Возможный дубликат:
Передача по ссылке / значению в C ++
Мне было интересно, в чем разница между вызовом по значению / ссылке / имени. И почему было бы выгодно использовать один над другим?
вызов по значению: копия параметров передается в функцию
Вызовите ссылку: дополнительная копия не создается, переменная вызывающей стороны передается напрямую.
Основным отличием является то, что одна дополнительная ненужная копия создается в парадигме вызова по значению … Вы всегда должны использовать ссылку call be (или ссылку const), если вызываемый объект не нуждается в изменении переменной, и вы не хотите, чтобы изменения в переменной вашего вызывающего …
Вызов по значению создает копию аргумента, который передается функции — так для большого объекта, который может создать большие накладные расходы. Это также останавливает внесение каких-либо изменений в аргумент внутри функции, поскольку они будут отражены только в копии. Вызов по ссылке передает ссылку на объект, и поэтому в этот объект могут быть внесены изменения — если, конечно, вы не пройдете мимо const
ссылка.