目录
一、什么是d指针和q指针
在Qt的源码中,我们看到大量的Q_D() 和Q_P() 宏的调用,查看代码时在一定程度上增加了复杂度。先看看两个宏的原型:
#define Q_D(Class) Class##Private * const d = d_func()
#define Q_Q(Class) Class * const q = q_func()
通过调用Q_D 和Q_Q 宏,我们就得到了大名鼎鼎的d指针和q指针。
1、d指针
#define Q_DECLARE_PRIVATE(Class) \
inline Class##Private* d_func() { return reinterpret_cast<Class##Private *>(qGetPtrHelper(d_ptr)); } \
inline const Class##Private* d_func() const { return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr)); } \
friend