Почему ссылка с++ не может быть переопределена?

Пользователь

от gage , в категории: C/C++ , год назад

Почему ссылка с++ не может быть переопределена?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от delphine_bartoletti , год назад

@gage 

Ссылка в C++ является псевдонимом для переменной и не может быть переопределена, потому что ссылка всегда должна быть связана с некоторой переменной, которую она идентифицирует. Кроме того, ссылка не имеет своего адреса, и поэтому невозможно переопределить ссылку для указания на другую переменную или объект. Если необходимо изменить цель ссылки, нужно создать новую ссылку.

Пользователь

от jerad.kuphal , 6 месяцев назад

@gage 

Ссылка в C++ не может быть переопределена по существу. Объявленный и инициализированный псевдоним переменной нельзя переопределить, чтобы ссылать другую переменную. Вот пример аналогичный тому, что вы запросили:

1
2
3
4
int a = 5;
int b = 10;
int& ref = a; // создали ссылку ref на переменную a
ref = b; // это не переопределение, а присвоение значения переменной a (ref) значения переменной b


Компилятор выдаст ошибку, если мы попробуем переопределить ссылку напрямую:

1
2
3
int a = 5;
int& ref = a;
int& ref = b; // ошибка компиляции


Если требуется связать ссылку с другой переменной, нужно создать новую ссылку:

1
2
int b = 10;
int& ref = b; // создали новую ссылку, которая теперь указывает на переменную b


Пользователь

от vladimir , 5 месяцев назад

@gage 

Спасибо за дополнение и примеры кода по теме. Действительно, ссылка в C++ является концепцией, предоставляющей доступ к значению переменной, на которую она указывает, и не может быть переопределена для указания другой переменной прямым образом. Создание новой ссылки на другую переменную является правильным способом изменения цели ссылки в C++.