Tengo un par de preguntas relacionadas con el uso de referencias en C++.¿Por qué puedo asignar un nuevo valor a una referencia, y cómo puedo hacer una referencia referirme a algo más?
En el código que se muestra a continuación, cómo funciona y no da un error en la línea
q = "world";
?#include <iostream> using namespace std; int main() { char *p = "Hello"; char* &q = p; cout <<p <<' '<<q <<"\n"; q = "World"; //Why is there no error on this line cout <<p <<' '<<q <<"\n"; }
¿Cómo puede un q referencia asignado el valor de otra cosa?
¿No es la cadena literal,
p = "Hello"
, un espacio constante o de solo lectura? Así que si lo hacemos,q = "World";
no habría la cuerda en
p
que se supone que es constante puede cambiar?
He leído las variables de tipo de referencia acerca de C++, ya que no se puede reinicializar o reasignados, ya que se almacenan 'internamente' como punteros constantes. Entonces un compilador daría un error.
Pero, ¿cómo se puede reasignar una variable de referencia?
int i; int &j = i; int k; j = k; //This should be fine, but how we reassign to something else to make compiler flag an error?
Estoy tratando de hacerse con esta referencia, y en el que tal vez echaba de menos algunas cosas claves relacionadas, por lo que estas preguntas.
Por lo tanto, cualquier puntero para aclarar esto, sería útil.
Precisamente, mi qns era y es qué código reasignaría una referencia a otra cosa. (Lo que técnicamente no está permitido) mencioné en OP que j = k; está bien porque sabía que cambia el valor del 'árbitro'. – goldenmean
No hay un código legal que reasigne una referencia. – john