Я читаю Скотта Мейрса C ++ и теперь раздел о passing-reference-to-const
, Он сказал, что для пользовательских типов почти всегда хорошо передавать его по ссылкам на const, в отличие от встроенных типов.
Мой вопрос заключается в том, почему встроенные типы должны передаваться по значению. Почему это более эффективно? Я думаю, что они могут быть внесены в регистры, но разве это единственная причина?
Когда вы передаете ссылку, за кулисами она передает указатель. Это более эффективно, чем прохождение всей структуры, которая может быть очень большой.
Все примитивные типы имеют одинаковый размер с указателем (в худшем случае они могут быть в два раза больше). Некоторые даже меньше — char
равен 1 байту, а указатели обычно составляют 4 или 8 байтов. Так что нет никакой эффективности, получаемой путем передачи по ссылке вместо передачи самого значения.
Других решений пока нет …