He leído en todas partes que una referencia tiene que inicializarse en ese momento y no se puede volver a inicializar de nuevo.¿Podemos reasignar la referencia en C++?
Para probar mi comprensión, he escrito el siguiente pequeño programa. Parece como si realmente hubiera logrado reasignar una referencia. ¿Puede alguien explicarme qué está sucediendo realmente en mi programa?
#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;
}
El código compila bien y la salida es como espero:
ri is : 5
ri is : 10
ri is : 9
¿Por qué 'const int & cri = i' no está permitido? ¿En qué línea no puedes escribir eso? Causa para mí el compilador permite insertar dicha línea en cualquier lugar. ¡Aparte de eso, es una respuesta clara y concisa! – mercury0114
No he dicho que no esté permitido, como has observado, tomar una referencia constante a una variable no const está bien. Dije que no te dejaría asignar a eso, lo que significa que no puedes cambiar la variable original a través de una referencia constante, como lo hizo OP con 'ri'. – Useless
Oh, cierto, ahora veo lo que querías decir. – mercury0114