【发布时间】:2014-01-21 20:32:14
【问题描述】:
在我开始之前——我知道多态对象有一个 vtable 可以在运行时选择正确的方法。但是,每个多态对象是否包含更多附加信息(不包括 vtable)?
与非多态对象相比,我正在尝试测量启用 RTTI 的多态对象的大小/成本。我只知道 vtable 开销,想知道 RTTI 中还存储了什么。
编辑:让我们说一下 GCC 编译器
【问题讨论】:
-
假设编译器向 vtable 添加了一个隐藏函数:
GetAllRTTIdata。由于 vtable 每个类只存在一次,而不是每个对象一次,并且您只向其中添加一个条目,因此开销几乎不存在。
标签: c++ polymorphism abstract virtual-functions rtti