Edit: Как многие отметили, pass-by-reference не является подходящей оптимизацией для примитивных типов. Это замечательно знать, так что спасибо всем! Несмотря на это, мой вопрос был скорее о том, почему буквальные значения не могут передаваться по ссылке, что и было сделано в принятом ответе. Будьте здоровы!
(Простите мою наивность: я совсем новичок в C++.)
Чтобы избежать неэффективности copy-by-value при вызове функции (скажем, "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?
Что происходит?