Как передавать "буквальные" целые числа по ссылке в C++ (Новичок)

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?

Что происходит?

15
задан aaaidan 6 December 2016 в 12:10
поделиться