[C con Clase] Copiar o clonar objeto

Steven Davidson srd4121 en njit.edu
Mar Jun 26 03:03:22 CEST 2012


Hola User,

On 6/25/2012 5:31 PM, User wrote:
> Hola,
>
> ¿Cómo puedo hacer una copia de un objeto? Tengo un objeto y necesito
> hacer una copia para tener otro objeto exactamente igual pero con la
> restricción de que los cambios que haga en el objeto copiado no se
> reflejen en el objeto original.
>
> He probado con:
>
> MyObject* myObject = myOriginalObject;
>
> De esta manera, tengo dos objetos, pero los cambios en uno se reflejan
> en el otro.
>

No. Aquí tienes dos punteros al mismo objeto. Si 'myOriginalObject' es 
un objeto, entonces tendrías que escribir,

MyObject* myObject = &myOriginalObject;

del que obtienes un puntero al objeto original.

> En el asunto del correo pongo 'Copiar o clonar' porque no tengo claro
> si lo que necesito es un objeto copia o un objeto clonado.
>

La verdad es que vienen a ser lo mismo, pero lo de "clonar" realmente 
interesa cuando queremos implementar un constructor polimórfico, cuando 
no sabemos el tipo original del objeto. En tu caso, sí sabes el tipo del 
objeto que quieres crear, por lo que deberías usar su constructor copia. 
Por ejemplo,

MyObject obj2( myOriginalObject );

o incluso,

MyObject obj2 = myOriginalObject;

Si quieres crear objetos dinámicamente, entonces sería,

MyObject *pObj = new MyObject;
*pObj = myOriginalObject;

En este caso, tendremos que usar el operador de asignación = y no el 
constructor copia.


Espero que esto te aclare las dudas.

Steven





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