考虑以下代码:structBase{};structDerived:publicvirtualBase{};voidf(){Base*b=newDerived;Derived*d=static_cast(b);}这是标准禁止的([n3290:5.2.9/2])所以代码无法编译,因为Derived虚拟继承自Base。从继承中删除virtual使代码有效。此规则存在的技术原因是什么? 最佳答案 技术问题是无法解决Base*Base开头之间的偏移量是多少子对象和Derived的开始目的。在您的示例中,它看起来没问题,因为只看到一个带有Ba
考虑以下代码:structBase{};structDerived:publicvirtualBase{};voidf(){Base*b=newDerived;Derived*d=static_cast(b);}这是标准禁止的([n3290:5.2.9/2])所以代码无法编译,因为Derived虚拟继承自Base。从继承中删除virtual使代码有效。此规则存在的技术原因是什么? 最佳答案 技术问题是无法解决Base*Base开头之间的偏移量是多少子对象和Derived的开始目的。在您的示例中,它看起来没问题,因为只看到一个带有Ba
我想检查一个对象(例如someObject)是否可分配(可转换)到另一种类型的变量(例如SpecifiedType)。在Java中,我可以这样写:someObjectinstanceofSpecifiedType一个相关的问题是查找对象的运行时类型是否等于另一种类型。在Java中,我可以这样写:someObject.getClass().equals(SpecifiedType.class)如何在Objective-C中做到这一点? 最佳答案 尝试[myObjectclass]来返回对象的类。您可以进行准确的比较:if([myObj
我想检查一个对象(例如someObject)是否可分配(可转换)到另一种类型的变量(例如SpecifiedType)。在Java中,我可以这样写:someObjectinstanceofSpecifiedType一个相关的问题是查找对象的运行时类型是否等于另一种类型。在Java中,我可以这样写:someObject.getClass().equals(SpecifiedType.class)如何在Objective-C中做到这一点? 最佳答案 尝试[myObjectclass]来返回对象的类。您可以进行准确的比较:if([myObj