, or a derived class: if (obj->IsA(MyClass::RTTI))…
与Nebula2相比, N3的RTTI检查是非常快的(N2中, 这需要先把一个类名字符串转换成一个指针...:
Ptr 类有3个转换方法, 其中2个是安全的向上和向下转换, 还有一个不安全但快速的C风格的强制转换....那两个安全的转换方法会调用Rtti::IsDerivedFrom()方法, 而且不会有临时的Ptr对象产生, 因为返回的是一个 const引用....直接从RTTI对象创建实例:
Ptr myObj = (MyClass*) MyClass::RTTI.Create();
这个过时的C风格转换看起来格格不入, 但在这里是必须的,...但是对于Nebula3的动态对象模型来说, 我们需要欺骗链接器来链接”没有使用”的类到可执行文件中去.