Si consideri il seguente frammento di codice:C++: implementazione del metodo uguale: come assicurarsi che l'oggetto indicato non sia lo stesso di riferimento?
bool SomeObject::equal(const SomeObject& rhs) const
{
if (this == &rhs)
{
return true;
}
// check the state
}
Il problema con questo codice è che SomeObject
potrebbe ignorare operator&
(o qualcuno potrebbe aggiungere in futuro), che a sua volta può rompere questa implementazione.
È possibile verificare se rhs
e *this
sono lo stesso oggetto senza essere in balia dell'implementazione di operator&
?
Interessante. 'this == rhs.this' e' :: & rhs' non funzionano. Buona domanda! –
@MrLister: lol a 'rhs.this' :-) Non dovrebbe essere' std :: that (rhs) '? –
In realtà, se hai a che fare con classi polimorfiche, potrebbe essere che qualcuno ti passi un riferimento di base di * * questo? E il tuo paragone fallisce erroneamente? –