PIMPL (Pointer to IMPLementation) - это техника, которая скрывает детали реализации класса за указателем на вспомогательный класс, содержащий фактическую реализацию
❗️Основная идея
В публичном заголовочном файле объявляется только интерфейс класса и указатель на вспомогательный класс. Все детали реализации перемещаются в отдельный файл реализации.
❗️Структура
Публичный класс (в заголовочном файле):
class PublicClass {
public:
PublicClass();
~PublicClass();
void someMethod();
private:
class Impl;
std::unique_ptr<Impl> pimpl;
};Приватный класс (в файле реализации):
class PublicClass::Impl {
public:
void someMethod() {
// Реальная реализация
}
};