- 基类有虚函数时才能实现RTTI机制:
- 基类无虚函数时,
typeid(*pA)
返回的是pA声明时的类型。 - 基类有虚函数时,
typeid(*pA)
返回的是pA指向对象的类型。
- 基类无虚函数时,
- 比较两个带有虚函数的类的对象是否相等
if (typeid(*a) == typeid(B))
if (dynamic_cast<B*>(a))
:如果能够成功向下转型成B类,那么就说明a时机指向的是B类对象。
虚表的第0个元素的前一个元素(即第-1个元素)存储着type_info
对象(参考:RTTI 的原理),如下所示: