Carlos Pantelides, el 24 de noviembre a las 11:26 me escribiste:
> y para que no haya slicing uso un puntero:
> 
>    SubClase * objeto = new Clase(otroObjeto);

Como te dije en el mail anterior, esto no tiene sentido, y es imposible
tener slicing al crear algo en el stack. El problema del slicing es al
pasar/recibir cosas por argumento o donde pueda ejecutarse el constructor
de copia implícitamente.

> pero como no quiero preocuparme por destruirlo, quiero una referencia
> (aqui habia un error de tipeo, decia "SubClase objeto"):
> 
>    SubClase & objeto(otroObjeto);

Esto tiene menos sentido que lo anterior. Eso se escribiría así:
SubClase & objeto = otroObjeto;

Y lo que significa eso es que querés que objeto sea una referencia a una
SubClase, pero le estás asignando una instancia de OtraClase, cosa que no
va a andar.

> Me parece que en ninguno de los tres casos hay slicing porque siempre es
> SubClase, es asi?

En el primero no hay slicing porque estás creando el objeto ahí, es
imposible que haya slicing si no hay copia. En el segundo no hay slicing
tampoco por la misma razón, no hay copia, pero está roto de todas maneras
porque estás haciendo un downcasting incorrecto (una Clase no es una
SubClase). En el tercer caso no hay slicing porque no compila =)

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Ever tried? Ever failed? - Try again! Fail better!
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a