Cuando nos enfrentamos a un problema de inicializacion de clases, cuyos miembros, son otras clases o estructuras "especiales" (que son tratadas como clases), nos veremos en la obligacion de implementar unos constructores de copia.
Por defecto, el compilador de C++ creará (este o no definido) un constructor, que servirá para iniciar la variable. Pero ¿que pasa si queremos copiar los datos de un objeto a otro?. Por definicion, un constructor de copia crea un nuevo objeto a partir de uno ya existente.
Por lo tanto, si no tenemos definido nuestro constructor de copia, muchas veces nos encontraremos con problemas para la carga (o copia) de algunos datos. Por lo mismo, nuestra aplicacion se vera en serios problemas, provocando caídas inesperadas al usuario.
A continuacion daré un ejemplo de como implementar el constructor de copia.
Tenemos la siguiente clase:
class tipo1
{
public:
tipo1(int status , double value):m_status(status),m_value(value);
tipo1(const tipo1& t1);
tipo1(const tipo1& t1);
private:
int m_status;
double m_value;
}
(en la implementacion de la clase)
tipo1::tipo1(const tipo1& t1) : m_status(t1.m_status), m_value(t1.m_value){}
Una vez definido el constructor, se usa de la siguiente forma:
int main()
{
...
tipo1 newTipo(0, 10.0);
tipo1 copyTipo(newTipo); // esta es una forma de usar el constructor de copia
tipo1 copyTipoe2 = newTipo; // una segunda forma de usar el constructor de copia
...
return 0;
}
Suerte! :)
No hay comentarios.:
Publicar un comentario