EC++: cosa viene passato all'operator=

Appunti tratti dalla rilettura di Effective C++ di Scott Meyers. Terzo blocco: Costruttori, distruttori e operatori di assegnamento.

(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