Редактировать: Как отмечали многие, переход по ссылке обычно не подходит в качестве оптимизации для примитивных типов.Это прекрасно, так что спасибо всем!Тем не менее, мой вопрос был больше о том, почему буквальные значения не могут передаваться по ссылке, на которую был принят принятый ответ.Cheers!
(Простите за наивность: я довольно новичок в C ++.)
Чтобы избежать неэффективности копирования по значению при вызове функции (скажем, "fillRect""), Я хочу передать параметры по ссылке.
Если я предоставлю параметры как объявленные локальные переменные, все будет работать нормально.Но если я предоставлю целые числа как «буквальные», я получу ошибку компиляции (без соответствующей функции).
void fillRect( int &x, int &y, int &width, int &height )
{
// do something
}
int x=10, y=20, w=100, h=80;
fillRect(x, y, w, h); // this compiles and works!
fillRect(x, y, 100, 80); // but this doesn't compile ... why?
Что дает?