2011-01-22 13 views

Respuesta

12

Generalmente, deberá definir su propio operador de asignación en las mismas circunstancias en las que necesita definir su propio constructor de copia, es decir, cuando una copia predeterminada no lo corte. Esto sucede en los casos en que su objeto gestiona la memoria asignada dinámicamente u otros recursos que deben copiarse especialmente.

Por ejemplo, si tiene una clase que maneja un puntero que apunta a la memoria asignada dinámicamente, el operador de asignación predeterminado simplemente copiará el puntero. En general, esto no es lo que quiere, quiere que cada instancia de objeto tenga su propia copia interna de los datos asignados, por lo que necesitará un operador de asignación especial que asigne su propia memoria y realice una copia. Esto es, por ejemplo, lo que std::vector debe hacer cuando se copia o se asigna.

+0

Sí, manejar memoria dinámica fue mi suposición. – user963241

+3

@cpx: De hecho, es un poco más general: administrar cualquier tipo de recurso para el cual el constructor predeterminado no lo hará correctamente o no está disponible. Eso incluye la memoria en los punteros, pero también cualquier otro recurso como, por ejemplo, un 'mutex' –

Cuestiones relacionadas