Это может быть глупый вопрос, но я замечаю, что в большом количестве API-интерфейсов множество сигнатур методов, которые принимают целочисленные параметры, которые не предназначены для изменения, выглядят следующим образом:
void method(int x);
а не:
void method(const int &x);
Мне кажется, что оба они будут работать точно так же. (EDIT: видимо, не в некоторых случаях, см. Ответ Р. Сэмюэля Клачко). В первом случае значение копируется и, следовательно, не может изменить оригинал. В последнем случае передается постоянная ссылка, поэтому оригинал не может быть изменен.
Я хочу знать, почему один за другим - это потому, что производительность в основном такая же или даже лучше с предыдущей? например передавая 16-битное значение или 32-битное значение, а не 32-разрядный или 64-разрядный адрес? Это была единственная логическая причина, о которой я мог думать, я просто хочу знать, правильно ли это, а если нет, то почему и когда вы предпочитаете int x
над const int &x
и/или наоборот. Спасибо.