Почему так работает константная ссылка?
int main() {
int a = 10;
const long int &ref = a;
a+=20;
std::cout << ref;
}
Если написать, то вывод будет 10
int main() {
int a = 10;
const int &ref = a;
a+=20;
std::cout << ref;
}
А вот здесь уже вывод 30.
Причём если делать неконстантную ссылку другого типа, то появляется ошибка во время компиляции.
int main() {
int a = 10;
long int &ref = a;
a+=20;
std::cout << ref;
}
Можете пожалуйста объяснить, что здесь происходит.
Ответы (1 шт):
Автор решения: αλεχολυτ
→ Ссылка
Когда типы одинаковые (int, int), то модификация исходного объекта сказывается и на ссылочной переменной. А когда типы разные (int, long), то при использовании константной ссылки создаётся временный объект, который уже не связан с исходным объектом. Поэтому модификация исходного объекта уже не приводит к модификации того, куда указывает ссылка.