Я читаю книгу "Исключительный C ++" Херба Саттера, и в этой книге я узнал об идиоме 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;
};
Это кажетсядовольно интересно, но я никогда не видел такого подхода раньше, ни в компаниях, где я работал, ни в проектах с открытым исходным кодом, которые я видел в исходном коде.Итак, мне интересно, этот метод действительно используется на практике?
Должен ли я использовать его везде или с осторожностью?И рекомендуется ли этот метод использовать во встроенных системах (где производительность очень важна)?