在C++中,有关使用
在C++中,实际上很难找到比较实际类型的代码。在大多数情况下,使用双重分派(使用
我想知道为什么在Java中多态类型比较的问题有两个可接受的解决方案,而在C++中只有一个被认为是最佳实践?是否存在重大技术差异,还是只是不同的方法?
typeid
的问题,我建议可以用它来比较对象类型。虽然我没有看到过这样的做法,但我想到了Java的equals
。
进一步研究Java后,似乎的确如此:有人说应该比较两个对象的实际类,有人说instanceof
是正确的工具,可能需要双重分派。当然,在某些情况下,其中一个显然更适合,但至少两种选择都被考虑。在C++中,实际上很难找到比较实际类型的代码。在大多数情况下,使用双重分派(使用
dynamic_cast
),我找不到任何人坚持在相等性检查开始时进行快速类型比较是正确的事情。我想知道为什么在Java中多态类型比较的问题有两个可接受的解决方案,而在C++中只有一个被认为是最佳实践?是否存在重大技术差异,还是只是不同的方法?
注意:我的观点基于印象,而非具体知识。如果它们是错误的,并且Java和C++在这方面确实相似 - 或者出于其他原因不同,那么这显然是可以接受的答案。
==
可以被重载 - 因此它取决于上下文... - Seb Holzapfelequals
方法可以被覆盖重写。差别不大。 - Ben Voigtoperator==
方法。如果一个类需要这个功能,它必须重载operator==
方法。 - Thomas Matthews