C++中的RTTI机制、多继承中的虚函数

发布时间 2023-10-22 12:32:15作者: 好人~

C++中的RTTI机制

  • 基类有虚函数时才能实现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 的原理),如下所示: