[C con Clase] RE : Re: Pasaje por valor de un objeto

Pedro Mateo pedromateoa en gmail.com
Mie Oct 24 17:08:05 CEST 2007


HOLA VANESA

por lo que leo de tus mensajes me doy cuenta que estamos mas o menos al
mismo nivel en el aprendizaje de c++
en mi experiencia te puedo decir que cuando vayas a definir una clase
siempre debes tener en cuenta el constructor de copia

hasta donde se si no lo creas el estara ahi porque el compilador lo generara
puesto que lo necesita para funciones a la que no estes pasando la clase por
referencia

ejemplo
si defines una funcion asi:
--------------------------------------------------------
void Hola(ClaseAmigo x){

}
-------------------------------------------------------
el compilador necesita el constructor de copia de ClaseAmigo pues x sera una
nueva instancia y para crearla se basa en la instancia que se le esta
enviando

para evitar la copia solo tienes que definir la funcion asi

--------------------------------------------------------
void Hola(ClaseAmigo& x){

}
-------------------------------------------------------
yo siempre defino el constructor de copia para determinar que debe suceder
cuando se copie mi clase
por las siguientes razones
1- si tengo objetos como miembro de mi clase estos objetos tambien deben
tener disponibles constructores de copia
2- si tengo punteros en mi clase no puedo copiar las direcciones si en el
destructor de mi clase le estoy dando un delete pues la primera instancia de
mi clase borrara el puntero y la segunda lo intentara generando un error

por estas dos razones siempre cuando hago una clase debo hacer prevision de
que debe suceder si intento hacer una copia de mi instancia, dependiendo de
tus concluciones debes hacer una de dos cosas
1-crear tu constructor de copia con acceso public (public:) para que este
disponible en todo tu programa
2-crear tu constructor de copia con acceso privado (private:)

lo ultimo te ayudara a evitar errores porque te obligara a crear todas las
funciones que van a recibir tu instancia, de manera que reciban la
referencia al objeto en vez de tratar de hacer un copia de la misma (favor
notar los ejemplos iniciales)

a la verda que la programacion en c++ es algo fino!!
jejejje
espero haberte aclarado
bye


El día 23/10/07, Vanesa DVJ (fr) <vanedvj en yahoo.fr> escribió:
>
> ok, gracias por la aclaracion y el consejo de verificacion paso a paso.
>
> me gustaria remarcar que aun cuando no haya declarado Constructor de
> Copia, no llama a los Constructores de Clase que sí tengo declarados, sino
> que hace una afectacion uno a uno de los miembros de la clase. Aun asi
> llamara al Destructor, haya o no definido uno.
>
> otra vez gracias por tan pronta respuesta.
>
> saludos cordiales,
>
> Vanesa
>
> ------------------------------
> Découvrez ce qui fait jaser les gens ! Visitez les groupes de l'heure sur
> * Yahoo! Québec Groupes. * <http://cf.groups.yahoo.com/>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20071024/0a7720cf/attachment.html>


Más información sobre la lista de distribución Cconclase