Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Const De C++

Iniciado por Miki, 16 de Febrero de 2004, 10:52:20 PM

« anterior - próximo »

Miki

Nada, era solo para saber si hay diferencia entre estos 2 parámetros pasados por referencia:

int MiFuncion( const cMiTipo &dato )
int MiFuncion( cMiTipo const &dato )

Es k lo he visto ya varias veces y estoy intrigado. En las ayudas oficiales no he visto el caso XD

Salud2

MChiz

 Hola!

Estas seguro de que eso que dices se puede hacer? Yo lo he visto asi:

int MiFuncion( const cMiTipo *dato )
int MiFuncion( cMiTipo const *dato )

Y tiene sus diferencias.

La primera funcion recibe un puntero a un dato cMiTipo, donde el contenido del puntero es constante ( se puede cambiar hacia donde apunta el puntero, pero no el contenido de lo que apunta ).
La segunda funcion recibe un parametro a un dato cMiTipo, donde el puntero en si es constante, y no su contenido. Es decir, puedes hacer *dato = ( lo que sea ), pero no puedes hacer ++dato, por ejemplo.

Y tambien podrias hacer:

int MiFuncion( const cMiTipo const *dato )

Donde todo vive en constancia y harmonia =P

Por eso al principio del post te preguntaba si estabas seguro que lo has visto con referencia, porque me extraña mucho hacer:

int MiFuncion( cMiTipo const &dato )

Porque no puedes mover una referencia, me explico?

Espero que te haya aclarado algo.

Un saludote!!

gdl

 
Hola, hola....

Creo que MChiz se acerca mucho....

Esta web puede ser interesante:

http://www.geocities.com/spur4444/prog/con...d_pointers.html

Sobre todo el "listing 3".

De hecho, el escribir


int MiFuncion( const cMiTipo *dato )


es llamado "estilo C++" y el poner


int MiFuncion( cMiTipo const *dato )


es llamado "estilo C". Pero claro, sólo son estilos. La semántica es la misma. Lo que no es lo mismo es poner


int MiFuncion( cMiTipo *const dato )


a no ser que no sea un puntero, sino una referencia... pero eso es otro rollo. Ya no quiero liar mas.

Feliz programación.