Как уже упоминалось в других ответах, ссылка по сути постоянна.
int &ref = obj;
После того, как вы инициализировали ссылку с объектом, вы не можете отсоединить эту ссылку с ее объектом, на который она ссылается. Ссылка работает так же, как псевдоним.
Когда вы объявляете ссылку const
, это не что иное, как ссылка, которая ссылается на объект const.
const int &ref = obj;
Приведенные выше декларативные предложения, такие как const
и int
, определяют доступные функции объекта, на которые будет ссылаться ссылка. Чтобы быть более понятным, я хочу показать вам pointer
эквивалент ссылки const
;
const int *const ptr = &obj;
Таким образом, приведенная выше строка кода эквивалентна const
ссылке в своем рабочем виде. Кроме того , есть еще один момент, о котором я хотел бы упомянуть;
Ссылка должна быть инициализирована только с объектом
Поэтому, когда вы сделаете это, вы получите ошибку;
int &r = 0; // Error: a nonconst reference cannot be initialized to a literal
Это правило имеет одно исключение. Если ссылка объявлена как const, вы также можете инициализировать ее литералами;
const int &r = 0; // a valid approach