¿Qué significa esto const int * & var?
Vi a alguien usando esto
void methodA(const int*& var);
en una respuesta, pero no podía entender lo que significa el argumento.
HASTA DONDE SE:
const int var
=> valor constante que no se puede cambiar
const int* var
=> puntero a int que es const i.e * var no se puede cambiar pero var se puede cambiar
const int& var
=> referencia a const int, es decir, el valor de var no se puede cambiar
Que haceconst int*& var
significa, y esconst int& *var
¿también es posible?
¿Puede por favor dar algún ejemplo también, como qué se puede hacer y qué no se puede hacer con él?
ACTUALIZACIÓN:
No estoy seguro de si estoy pensando correctamente, pero comencé a pensar la referencia como alias de la variable que se pasó como argumento, así que const int * p; methodA (p) => aquí estamos pasando p como const int * pero no sabemos si esto se pasa por valor o hasta que vemos la definición del método A,
así que si methodA es como este methodA (const int * & p2) ==> aquí p2 es otro nombre para p, es decir, p y p2 son iguales a partir de ahora y si methodA (const int * p2) ==> aquí se pasa p2 como valor es decir, p2 es simplemente local a este método,
Por favor, corrígeme si estoy pensando mal. Si es así, ¿podría necesitar estudiar un poco más sobre esto? ¿Puedes por favor señalar algunas buenas referencias?
ACTUALIZACIÓN 2 Si algún principiante como yo quiere saber más sobre esto, puedes usarc ++ decl / programa cdecl, que acabo de descubrir muy útil desdeaquí
$ c++decl
Type `help' or `?' for help
c++decl> explain const int&* p
declare p as pointer to reference to const int
c++decl> explain const int*& p
declare p as reference to pointer to const int
Pero como todos señalamos aquí, el primer ejemplo no es legal en C ++.
Gracias