在关于使用typeid
is C++ 的问题中,我建议它可以用于比较对象比较中的类型。我还没有看到它做了太多,但我想到了 Java equals
。
再深入研究一下 Java,似乎是这样:有人说应该比较两个对象的实际类,有人说 instanceof
是使用正确的工具,可能是双重分派。当然,在某些情况下,两者中的一个肯定更合适,但至少两个选项都被考虑在内。
在 C++ OTOH 中,我几乎找不到用于比较实际类型的代码。在大多数情况下,使用双重分派(with dynamic_cast
),我找不到任何人坚持快速类型比较是在平等检查开始时做的正确事情。
我想知道为什么多态类型比较的问题在 Java 中有两种可以接受的解决方案,而在 C++ 中似乎只有一种被认为是最佳实践?是否存在显着的技术差异,或者只是不同的方法?
注意:我的说法是基于印象,而不是具体知识。如果它们是错误的,并且 Java 和 C++ 在这方面确实相似——或者由于上述以外的原因而不同,那么这显然是一个可以接受的答案。