c++: реализация метода equal - как убедиться, что данный объект не является той же ссылкой, что и this?

Рассмотрим следующий фрагмент кода:

bool SomeObject::equal(const SomeObject& rhs) const
{
  if (this == &rhs)
  {
    return true;
  }

  // check the state
}

Проблема с этим кодом в том, что SomeObject может переопределить operator& (или кто-то может добавить его в будущем), что в свою очередь может сломать эту реализацию.

Можно ли проверить, являются ли rhs и *this одним и тем же объектом, не находясь во власти реализации operator&?

11
задан mark 11 January 2012 в 15:31
поделиться