d指针在Qt中大量使用,它们是pimpl成语的实现.我知道pimpl成语的优点和缺点.但是我错过了d指针实现的优点.
Here和
here是d指针的样本.
使用它不容易吗?
class MyClassPrivate;
class MyClass {
// interface methods
private:
MyClassPrivate *pimpl_;
};
d-pointer模式的宏集提供了一些排序方便和一致性.例如,Q_DECLARE_PRIVATE确保Foo的pimpl私有类命名为FooPrivate,FooPrivate与Foo相交,并创建一个名为d_func()的很好的内联
函数(const和nonconst版本).后者用于Q_D宏,它基本上创建一个指向私有类实例的作用域/局部变量d.
简而言之,您不需要使用Q_DECLARE_PRIVATE和其他宏,但这样做会使代码更短,更干净,一致.