我是一位研究高级C++主题的新手,所以如果问题听起来太明显,请原谅我。使用typeid实现RTTI
我一直在阅读有关各种方法,通过它们我们可以在运行时以C++(通常称为RTTI)获取对象类型的信息。
但是,我很困惑它是如何工作的。 我读过一些RTTI解释时经常提到的东西。其中之一是动态使用dynamic_cast <>将对象强制转换为其他对象。另一个是在运行时使用typeid来确定对象的类型。
我想知道使用typeid是否是在C++中实现RTTI的正确方法,如果是,那么typeid操作符在运行时如何确定对象的类型(是否分析在内存中的对象blob?)
如果使用typeid不是正确的方式,那么请为其实现提供其他方法。
它看起来像你倒退了。 'typeid'可以工作,因为RTTI是在编译器中实现的,所以询问是否使用'typeid'“来实现RTTI”看起来很混乱。 “实施RTTI”是什么意思? – 2013-04-28 18:40:44
你试图解决什么问题让你觉得你需要RTTI和/或typeid? – quamrana 2013-04-28 18:41:31
C++ RTTI系统是[反射](http://en.wikipedia.org/wiki/Reflection_%28computer_programming%29)的一个非常差和功能较少的变体。我个人的观点是,无论使用哪种语言,都应尽可能避免设计中的任何反射需求。 – 2013-04-28 18:43:17