(17) Controlla il caso di un assegnamento a sé stesso in operator=.
Il problema é quello dell'identità. Ovvero: quando possiamo dire che due oggetti sono in realtà lo stesso oggetto?
In genere é sufficiente controllare che l'indirizzo in memoria dei due oggetti sia il medesimo, ma a volte occorre effettuare controlli più approfonditi, tipicamente usando l'operatore == opportunamente ridefinito per una classe.
Il caso più comune é comunque questo:
C& C::operator=(const C& rhs)
{
if (this == &rhs)
return *this;
// ...
}
Nessun commento:
Posta un commento