El último post el que esta abajo. ->

Iniciado por anonimo12121, 12 Marzo 2011, 00:51 AM

0 Miembros y 2 Visitantes están viendo este tema.

Akai

En principio, la importancia de sobrecargar el operador de asignación o de realizar un constructor de copia en una clase viene por lo siguiente:

(Dependiendo del compilador, pero en principio)
Si no están definidos, se copia campo a campo.

Problema? Si tienes memoria dinámica, y copias campo a campo, tienes dos punteros apuntando al mismo sitio. La copia es borrada (por ejemplo, pasabas por copia en una función) y con ello se libera la memoria dinámica a la cual apuntaba. Ahora, el original tiene un campo que apunta a un espacio liberado, mala suerte, violación de segmento cuando accedas y fin del programa.

Solución? constructores de copia y sobrecarga de operadores de asignación, para en caso que tu clase trabaje con memoria dinámica, replicar dicha memoria de forma manual, y no copiando el puntero. (por ejemplo, volviendo a declarar un vector y copiando todos los elementos manualmente, en vez que el compilador simplemente te copie el puntero).