PIMPL(Private Implementation)模式是一种设计模式,也被称为“编译期接口隔离”或“指针实现”模式。它的主要目的是将类的私有实现部分与公共接口部分分离,以减少编译依赖性、提高封装性和减少暴露的细节。在 C++ 中,PIMPL 模式通常通过将类的私有数据和实现放在一个单独的类中,然后在类的公共接口中使用指向该私有实现类的指针来实现。
在 Qt 中,Q_DECLARE_PRIVATE
和 Q_DECLARE_PUBLIC
是两个宏,用于实现 PIMPL 模式。Q_DECLARE_PRIVATE
用于在类中声明一个私有指针,指向私有实现类,而 Q_DECLARE_PUBLIC
用于在类中声明一个公共指针,用于访问公共接口。
下面是一个示例,演示如何使用 PIMPL 模式和 Q_DECLARE_PRIVATE
、Q_DECLARE_PUBLIC
宏:
// Widget.h
#include <QObject>
class WidgetPrivate; // 前向声明私有实现类
class Widget : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(Widget)
public:
Widget(QObject *p