【发布时间】:2011-10-09 16:37:45
【问题描述】:
a question regarding the use of typeid 是 C++,我建议它可以用来比较对象比较中的类型。我没有看到它做太多,但我想到了 Java 的 equals。
Looking into Java a bit more,似乎是这样:Some say 应该比较两个对象的实际类,some say instanceof 是正确使用的工具,可能带有双重调度。当然,在某些情况下,两者中的一个肯定更合适,但至少是both options are considered。
在 C++ OTOH 中,我几乎找不到用于比较实际类型的代码。在大多数情况下,使用双重分派(dynamic_cast),我找不到任何人坚持在相等检查开始时进行快速类型比较是正确的做法。
我想知道为什么多态类型比较问题在 Java 中有两种可接受的解决方案,而在 C++ 中似乎只有一种被认为是最佳实践?是否存在显着的技术差异,或者只是方法不同?
注意:我的说法是基于印象,而不是具体知识。如果它们是错误的,并且 Java 和 C++ 在这方面确实相似 - 或者由于上述以外的原因而有所不同,那么这显然是一个可以接受的答案。
【问题讨论】:
-
在 c++ 中
==可以重载 - 所以它取决于上下文... -
@Schnommus:在 Java 中,
equals可以被覆盖。差别不大。 -
@Ben Voigt:好点。如果不是为了读者,我会删除我的评论
-
在 C++ 中,类不会自动附带
operator==方法。如果一个类需要这个能力,它必须重载operator==方法。
标签: java c++ equals language-comparisons equality-operator