В некоторых источниках C ++ я видел, что результат выражения может быть сохранен как постоянное благоговение. Как это:
const int &x = y + 1;
Что это значит?
Есть ли документация по этому поводу? Я не могу найти это ..
Для меня это похоже на:
const int x = y + 1;
так как результат программы остается прежним. Это действительно эквивалентно?
Если да, то почему язык вообще позволяет писать первым способом? Это выглядит сбивающим с толку.
Если нет, в чем разница?
Разница должна заключаться в том, будет ли результат скопирован / перемещен. В первом случае:
const int& x = y + 1;
Значение y+1
по существу сохраняется как временное значение. Затем мы инициализируем ссылку x
к этому временному результату. В другом случае:
const int x = y + 1;
Мы вычисляем y + 1
и инициализировать постоянную переменную x
со значением.
На практике с целыми числами не будет видимой разницы. Если y+1
Оказалось, что это большая структура данных, например, класс, который составляет 1 МБ данных, это может иметь существенное значение.
Других решений пока нет …