#include "m.h" #include #include using namespace std; //使用反射机制获取与类相关的信息 // 1、QMetaObject 类中获取与类相关的信息的成员函数有 // const char* className() const; // 获取类的名称,注意,若某个 QObject 的子类未启动元对象系统(即未使用 Q_OBJECT // 宏),则该函数将获取与该类最接近的启动了元对象系统的父类的名称,而不再返回 // 该类的名称,因此建议所有的 QObject 子类都使用 Q_OBJECT 宏。 // const QMetaObject* superClass() const; // //返回父类的元对象,若没有这样的对象则返回 0。  bool inherits(const QMetaObject* mo) const; (Qt5.7) // //若该类继承自 mo 描述的类型,则返回 true,否则返回 false。类被认为继承自身。 // 2、QObject 类中获取与类相关的信息的成员函数有 // bool inherits(const char* className) const; // //若该类是className 指定的类的子类则返回true,否则返回false。类被认为继承自身。 int main(){ A ma; B mb; C mc; D md; const QMetaObject *pa=ma.metaObject(); const QMetaObject *pb=mb.metaObject(); cout<className()<inherits(pa)<inherits(pb)<inherits(pa)<className()<