В вопрос об использовании typeid
- это C ++, я предложил использовать его для сравнения типов при сравнении объектов.Я не видел, чтобы это было сделано много, но я имел в виду Java equals
.
Если взглянуть на Java чуть более , похоже, это так: Некоторые говорят, фактические классы двух объектов должны сравниваться, и некоторые говорят, что instanceof
- правильный инструмент для использования, возможно, с двойной диспетчеризацией.Конечно, есть случаи, когда один из двух определенно более подходит, но по крайней мере оба варианта считаются .
В C ++, OTOH, я едва мог найти код, в котором действительныйтипы сравниваются.В большинстве случаев используется двойная диспетчеризация (с dynamic_cast
), и я не смог найти никого, кто бы настаивал на том, чтобы быстрое сравнение типов было правильным в начале проверки на равенство.
ЯИнтересно, почему проблема сравнения полиморфных типов имеет два приемлемых решения в Java, в то время как в C ++ только одно кажется наилучшим?Существуют ли значительные технические различия или просто разные подходы?
Примечание. Мои претензии основаны на впечатлениях, а не на конкретных знаниях.Если они ошибочны, а Java и C ++ действительно похожи в этом аспекте - или отличаются по причинам, отличным от указанных выше, это, очевидно, будет приемлемым ответом.