[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