[C con Clase] Copiar o clonar objeto
Ferran Ferri
ferranferri en gmail.com
Mar Jul 17 09:51:09 CEST 2012
Hola Angel Luis. Te recomiento que siempre que puedas uses const& para
tus métodos simpre que quieras parametros solo de entrada (y no
entrada/sailida). En este caso:
MyObject MyObject::operator=(const MyObject& myOriginalObject){
MyObject obj = new MyObject();
obj.campo1 = myOriginalObject.campo1;
obj.campo2 = myOriginalObject.campo2;
return obj;
}
Por que haces que el compilador pueda comprobar que accidentalmente no
sobreescribes el objeto y por que ademas no copias todo el objeto sino
que envias una referencia, ganado performance de manera gratuita.
On 6/26/12, Ángel Luis <angelluispg897 en gmail.com> wrote:
> Para clonar o copiar un objeto debes redefinir el operador "=" de la
> siguiente forma
>
> MyObject MyObject::operator=(MyObject myOriginalObject){
> MyObject obj = new MyObject();
> obj.campo1 = myOriginalObject.campo1;
> obj.campo2 = myOriginalObject.campo2;
>
> return obj;
> }
>
> Espero que te sirva
>
> El 25/06/12 23:31, User escribió:
>> 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.
>>
>> 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.
>>
>> Saludos.
>>
>>
>> _______________________________________________
>> 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
>
>
>
--
Ferran Ferri
Más información sobre la lista de distribución Cconclase