Я читал везде, что ссылка должна быть инициализирована тогда и там и не может быть повторно инициализирована снова.Можно ли переназначить ссылку в C++?
Чтобы проверить мое понимание, я написал следующую небольшую программу. Кажется, мне действительно удалось переназначить ссылку. Может кто-нибудь объяснить мне, что на самом деле происходит в моей программе?
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main()
{
int i = 5, j = 9;
int &ri = i;
cout << " ri is : " << ri <<"\n";
i = 10;
cout << " ri is : " << ri << "\n";
ri = j; // >>> Is this not reassigning the reference? <<<
cout << " ri is : " << ri <<"\n";
getch();
return 0;
}
код компилируется нормально и выход, как я ожидал:
ri is : 5
ri is : 10
ri is : 9
Почему 'const int & cri = i' не разрешено? На какой строке вы не можете написать это? Причина для компилятора позволяет вставить такую строку в любом месте. Кроме того, это четкий и краткий ответ! – mercury0114
Я не сказал, что это не допустимо - как вы заметили, принятие константы ref к неконстантной переменной в порядке. Я сказал, что не разрешаю вам назначать это_, то есть вы не можете изменить исходную переменную через const ref, как OP с помощью 'ri'. – Useless
О, хорошо, теперь я понимаю, что вы имели в виду. – mercury0114