d-pointer 指向私有类的指针
d-pointer指针指向一个包含所有数据的私有的(内部的)数据结构,通常都命名为XXXPrivate的类,每个对外公开的类都维护自己的一个 d-pointer。
class Widget {
Rect geometry() const;
private:
// d-pointer never referenced in header file.
// Since WidgetPrivate is not defined in this header,
// any access will be a compile error
WidgetPrivate d_ptr;
};
q-pointer 指向公有类的指针
有些时候,私有类XXXPrivate需要访问公有类XXX的一些接口,此时给私有类保留一个指向公有类的指针q-pointer来实现。
/ widget_p.h */ (_p意味着私有)
struct WidgetPrivate {
// constructor that initializes the q-ptr
WidgetPrivate(Widget *q) : q_ptr(q) { }
Widget q_ptr; // q-ptr that points to the API class
Rect geometry;
String stylesheet;
};
网友评论