2015-10-15 5 views
0

Я читаю Scott Meyrses C++ и теперь раздел о passing-reference-to-const. Он сказал, что для пользовательских типов почти всегда полезно передавать его по ссылкам-на-const, в отличие от встроенных типов.Пропущенные примитивы по значению

Мой вопрос в том, почему встроенные типы должны передаваться по значению. Почему он более эффективен? Я думаю, что они могут быть помещены в регистры, но это единственная причина?

+2

Передача путем ссылки или передачи указателя является дополнительной косвенностью. Там, где он не оптимизирован, существует разыменование указателя для использования значения, а то, что используется для копирования указателя, не меньше, чем просто копирование самого значения. –

ответ

5

Когда вы передаете ссылку, за кулисами идет указатель. Это более эффективно, чем передача всей структуры, которая может быть очень большой.

Примитивные типы примерно такого же размера, как указатель (в худшем случае они могут быть в два раза больше). Некоторые из них еще меньше - char - 1 байт, а указатели обычно 4 или 8 байтов. Таким образом, эффективность не достигается за счет передачи по ссылке вместо передачи самого значения.