【问题标题】:What information does RTTI store for a polymorphic object?RTTI 为多态对象存储了哪些信息?
【发布时间】:2014-01-21 20:32:14
【问题描述】:

在我开始之前——我知道多态对象有一个 vtable 可以在运行时选择正确的方法。但是,每个多态对象是否包含更多附加信息(不包括 vtable)?

与非多态对象相比,我正在尝试测量启用 RTTI 的多态对象的大小/成本。我只知道 vtable 开销,想知道 RTTI 中还存储了什么。

编辑:让我们说一下 GCC 编译器

【问题讨论】:

  • 假设编译器向 vtable 添加了一个隐藏函数:GetAllRTTIdata。由于 vtable 每个类只存在一次,而不是每个对象一次,并且您只向其中添加一个条目,因此开销几乎不存在。

标签: c++ polymorphism abstract virtual-functions rtti


【解决方案1】:

那里也可能有一个实现定义的类型名称(对于std::type_info::name(),理论上它可以包含任何东西),但除此之外它几乎只是vtable。当然,我想不出还有什么需要来满足语言规则。

一般情况下不能多说;这完全取决于实现,您没有指定一个。如果确实需要,某些编译器可以包含鸡汤配方。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2021-10-01
  • 2017-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2018-06-22
相关资源
最近更新 更多