В C ++ тестирование на равенство обычно выполняется каждым классом индивидуально. При любой разумной реализации можно предположить, что объект будет равен самому себе.
Компиляторы делают эту оптимизацию?
Другими словами, если &a == &b
Компилятор допускает, что a == b
для типов классов?
Типы классов можно сравнивать только с ==
если есть подходящая пользовательская перегрузка оператора; и эта перегрузка может делать что угодно, «разумно» или иначе.
Один контрпример NaN
, double
содержащий NaN
не сравнивать равных с собой.