【发布时间】:2016-02-11 14:38:21
【问题描述】:
据我了解,RTTI 在各种 C++ 编译器(例如 GCC)中是如何实现的,指向 type_info 数据的指针存储在每个类的 vtable 数据中。
同样如here 所述,POD 类型可能没有vtable。
但如果 POD 类型可能没有 vtable,那么指向 type_info 的指针存储在哪里?我知道它是特定于实现的,但最好了解 C++ 编译器(例如 GCC)的内部结构。
【问题讨论】:
-
指针是静态确定的,对吧?因为没有什么动态需要考虑的。
-
“了解 C++ 编译器(例如 GCC)的内部结构会更好。”嗯,GCC 和 Clang 都是开源的,所以你可以看看它。
-
AFAIK,没有。 see this code
-
澄清 Kerrek 的声明:POD 类型确实有
type_info,但没有 RTTI,这是可能的,因为type_info并不总是 RTTI。