domingo, 11 de abril de 2010

if( &other != this )

Cuando se escribe el operator =, hay que protegerse contra la asignación de una variable consigo misma, por ejemplo:
a = a;
Esto cobra mas importancia si "a" es un objeto de una clase que tiene algun puntero al interior, porque a veces el operator= lo primero que hace es borrar el puntero guardado.

La fórmula, usualmente es una construcción de este estilo:

MiClase& operator=( MiClase& otro ) {
if( &otro != this ) {
...
}
return *this;
}


De este modo, el hacer
a = a;
hará nada, pues en ese caso, &other y this apuntaran a la misma direccion de memoria.

No hay comentarios:

Publicar un comentario