vi a alguien usando este¿Qué significa esto const int * & var?
void methodA(const int*& var);
en una respuesta, pero no podía entender lo que significa el argumento.
yo sepa:
const int var
=> valor const que no puede ser cambiadoconst int* var
=> puntero a int que es decir const * var no se puede cambiar, pero puede ser var cambiadoconst int& var
=> referencia a const int es decir, valor de var no se puede cambiar
¿Qué significa const int*& var
y es const int& *var
también posible?
¿Podría darme 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 manera correcta, pero empecé a pensar en referencia con el alias de la variable que se pase como argumento, por lo const int * p; MethodA (p) => aquí estamos pasando p como const int *, pero no sabemos si se trata de pasar por valor o lo que hasta que veamos la definición de método A,
así que si MethodA es así MethodA (const int * & p2) aquí p2 es otro nombre para p, es decir, p y p2 son los mismos de ahora en adelante y si el método A (const int * p2) ==> aquí p2 se pasa como valor, es decir, p2 es solo 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 señalar algunas buenas referencias?
ACTUALIZACIÓN 2 Si algún principiante como yo quiero saber más sobre esto, puede utilizar C++ decl/programa cdecl, que acabo de descubrir a muy útil desde here
$ 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ñalaron aquí, el primer ejemplo no es legal en C++.
Gracias
en el tercer método baz, ConstIntPointer == const int * var, ¿cómo pasa esto por valor, hay un puntero involucrado? Yo estoy confundido ahora. –
Los punteros toman espacio ellos mismos. Los punteros son variables que almacenan la dirección de otra variable. Copiará ese valor, lo insertará en la pila y llamará a esa función. – GManNickG
Está pasando el valor que está almacenado en el puntero (es decir, la dirección de memoria). –