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