В чем разница между equals () в Java и оператором == в C ++?

В вопрос, касающийся использования typeid в C ++, я предположил, что его можно использовать для сравнения типов при сравнении объектов. Я не видел, чтобы это было сделано много, но я имел в виду равный для Java.

Если посмотреть на Java немного подробнее , кажется, что это так: Некоторые говорят ] необходимо сравнить фактические классы двух объектов, и некоторые говорят, что instanceof является правильным инструментом для использования, возможно, с двойной отправкой. Конечно, есть случаи, когда один из двух определенно более подходит, но по крайней мере рассматриваются оба варианта .

В C ++, OTOH я едва мог найти код, в котором сравниваются фактические типы . В большинстве случаев используется двойная отправка (с dynamic_cast ), и я не смог найти никого, кто настаивал бы на том, чтобы быстрое сравнение типов было правильным в начале проверки равенства.

I ' Мне интересно, почему проблема сравнения полиморфных типов имеет два приемлемых решения в Java, в то время как в C ++ только одно, кажется, считается лучшей практикой? Существуют ли существенные технические различия или просто разные подходы?

Примечание: Мои утверждения основаны на впечатлении, а не на конкретных знаниях. Если они ошибаются и Java и C ++ действительно похожи в этом аспекте - или отличаются по причинам, не указанным выше, это, очевидно, будет приемлемым ответом.

10
задан Community 23 May 2017 в 10:27
поделиться