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