Considere el siguiente fragmento de código:C++: implementando el método igual - ¿cómo asegurarse de que el objeto dado no sea la misma referencia que este?
bool SomeObject::equal(const SomeObject& rhs) const
{
if (this == &rhs)
{
return true;
}
// check the state
}
El problema con este código es que SomeObject
podría anular operator&
(o alguien podría añadir en el futuro), que a su vez puede romper esta aplicación.
¿Es posible comprobar si rhs
y *this
son el mismo objeto sin estar a merced de la implementación operator&
?
Interesante. 'this == rhs.this' y' :: & rhs' no funcionan. ¡Buena pregunta! –
@MrLister: lol at 'rhs.this' :-) ¿No debería ser' std :: that (rhs) '? –
En realidad, si se trata de clases polimórficas, ¿podría ser que alguien le pasa una referencia base de '* this' y su comparación falla erróneamente? –