Действительно ли идиома pImpl используется на практике?

Я читаю книгу Херба Саттера «Исключительный C ++», и в этой книге я узнал об идиоме pImpl. По сути, идея состоит в том, чтобы создать структуру для частных объектов класса и динамически выделить их, чтобы уменьшить время компиляции (а также скрыть частные реализации в лучшую сторону).

Например:

class X
{
private:
  C c;
  D d;  
} ;

можно было бы изменить на:

class X
{
private:
  struct XImpl;
  XImpl* pImpl;       
};

, а в CPP определение:

struct X::XImpl
{
  C c;
  D d;
};

Это кажется довольно интересным, но я никогда раньше не видел такого подхода, ни в компаниях, где я не работали, ни в проектах с открытым исходным кодом, которые я видел исходный код. Итак, мне интересно, действительно ли эта техника используется на практике?

Должен ли я использовать ее везде или с осторожностью? И рекомендуется ли использовать этот метод во встроенных системах (где производительность очень важна)?

157
задан Wodzu 8 June 2015 в 10:41
поделиться