d指针在Qt中大量使用,它们是pimpl惯用语的实现。我知道pimpl习惯用法的优缺点。但是我错过了D指针实现的优势。 Here和here是d指针的样本。
仅使用它难道不是很容易吗?
class MyClassPrivate;
class MyClass {
// interface methods
private:
MyClassPrivate *pimpl_;
};
最佳答案
d指针模式的宏集提供了某种便利和一致性。例如,Q_DECLARE_PRIVATE确保Foo的pimpl私有(private)类被命名为FooPrivate,FooPrivate与Foo成为 friend ,并创建一个很好的内联函数(const和nonconst版本),称为d_func()。后者用于Q_D宏,该宏基本上创建了一个作用域/局部变量d,该变量指向私有(private)类实例。
简而言之,您不必使用Q_DECLARE_PRIVATE和其他宏,但是这样做会使代码更短,更简洁和一致。