文章目录
Qt 中 D、Q 指针的实现
Qt 中 D、Q 指针机制的实现是通过宏定义,实现代码在 qtbase --> src --> corelib --> qglobal.h 和 qobject.h、qobject.cpp 中
在 QObject 中的实现为:
Q_DECLARE_PRIVATE 是一个宏,其定义是在 qglobal.h 中:
d_ptr 的定义在 QObject 类中:
另外,还有一个 Q_DECLARE_PUBLIC,其定义为:
q_ptr 在 QObjectData 类中:
Q_D 和 Q_Q 的定义为:
Q_D 和 Q_Q 也就是我们经常见到的 D 和 Q 指针的用法了,例如:
这样实现的一个好处就是二进制兼容.
所谓二进制兼容动态库,指的是一个在老版本库下运行的程序,在不经过编译的情况下,仍然能够在新的版本库下运行;需要经过编译才能在新版本下运行,而不需要修改该程序源代码,我们就说该动态库是源代码兼容的。