Постоянная переменная против постоянной ссылки

В некоторых источниках C ++ я видел, что результат выражения может быть сохранен как постоянное благоговение. Как это:

 const int &x = y + 1;

Что это значит?
Есть ли документация по этому поводу? Я не могу найти это ..


Для меня это похоже на:

 const int x = y + 1;

так как результат программы остается прежним. Это действительно эквивалентно?

Если да, то почему язык вообще позволяет писать первым способом? Это выглядит сбивающим с толку.

Если нет, в чем разница?

4

Решение

Разница должна заключаться в том, будет ли результат скопирован / перемещен. В первом случае:

const int& x = y + 1;

Значение y+1 по существу сохраняется как временное значение. Затем мы инициализируем ссылку x к этому временному результату. В другом случае:

const int x = y + 1;

Мы вычисляем y + 1 и инициализировать постоянную переменную x со значением.

На практике с целыми числами не будет видимой разницы. Если y+1 Оказалось, что это большая структура данных, например, класс, который составляет 1 МБ данных, это может иметь существенное значение.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]