Теоретически те, без ссылок, могут быть скопированы в память, так как существует вероятность того, что ваша встроенная функция может их изменять (даже если это не так).
Во многих случаях компилятор достаточно умен.подобрать такую вещь, но это будет зависеть от компилятора и настроек оптимизации.Также, если ваш вызов функции для любых неконстантных функций-членов в переменных класса, ваш компилятор должен быть достаточно умен, чтобы проверить, что они тоже что-то модифицируют.
Используя константную ссылку, вы можете датьэто довольно четкое указание.
РЕДАКТИРОВАТЬ: Я просто взглянуть на машинный код для простой тестовая программа скомпилирована с GCC 4.6 в DDD.Сгенерированный код казался идентичным, поэтому он, похоже, оптимизирован.Это все еще хорошая практика для других компиляторов, и, если ничего не дает четкого указания о намерениях кода.Также возможно, что есть более сложные ситуации, которые компилятор не может оптимизировать.
Также демоверсия llvm онлайн-диссамблера показывает, что там также генерируется идентичный битовый код.Если вы отключите оптимизацию, она будет немного длиннее без ссылки на const.* 1964 байта - без константной ссылки (и без других констант по функциям / параметрам)* 1960 байтов - просто нет константной ссылки, но есть другие.* 1856 байт - с константой и константной ссылкой.