Я читаю книгу "Исключительный С++" Херба Саттера, и в этой книге я узнал о идиоме pImpl. В принципе, идея состоит в том, чтобы создать структуру для объектов private
объекта class
и динамически выделить их уменьшить время компиляции (а также лучше скрыть частные реализации).
Например:
class X
{
private:
C c;
D d;
} ;
можно изменить на:
class X
{
private:
struct XImpl;
XImpl* pImpl;
};
и, в CPP, определение:
struct X::XImpl
{
C c;
D d;
};
Это кажется довольно интересным, но я никогда не видел такого подхода раньше, ни в компаниях, с которыми я работал, ни в проектах с открытым исходным кодом, которые я видел в исходном коде. Итак, мне интересно, что этот метод действительно используется на практике?
Должен ли я использовать его везде или с осторожностью? И этот метод рекомендуется использовать во встроенных системах (где производительность очень важна)?