需求
QMetaObject
?
解决
QMetaObject
是 Qt
的元对象系统,里面保持了类的相关信息,主要的作用是为了在有指针的情况下,获取这个指针具体的类型信息,方便调试;另外也是
Qt
实现信号和槽的基础。毕竟 C++
只有 dynamic_cast
用来试探子类型,
typeid
只能获取类型名称,其他类型相关信息都不能获取。
由于C++是静态类型语言,有关类的信息只在编译期被使用,编译后就不再保留,因此程序运行时无法获取类的信息。这时就需要使用「运行期类型信息」,即 RTTI(Run-Time Type Information)。