C 相当于 Java 的 Instanceof:dynamic_cast 和替代方法
Java 的 instanceof 运算符允许您检查对象是否是特定对象的实例类或其子类。在 C 中,您可以使用dynamic_cast 实现类似的功能。
<code class="cpp">if (NewType* v = dynamic_cast<NewType*>(old)) { // Cast succeeded, old is a NewType object v->doSomething(); }</code>
此方法需要在编译器中启用运行时类型信息 (RTTI)。但是,dynamic_cast 可能会降低性能。
替代方法:
<code class="cpp">switch (old->getType()) { case BOX: // old is a Box object break; case SPECIAL_BOX: // old is a SpecialBox object break; }</code>
这种方法不需要 RTTI,但不适合多级继承。
注意: 考虑动态类型检查的必要性,因为它可以指示设计问题。在许多情况下,虚拟函数或枚举方法等替代方案可能会提供更好的设计和性能。
以上是如何在 C 中实现 Java 的 `instanceof` 功能:`dynamic_cast` 和替代方案?的详细内容。更多信息请关注PHP中文网其他相关文章!