Предположим, у меня есть такой класс (упрощенно):
class Foo_p;
class Foo
{
private:
Foo_p *p;
public:
Foo();
/* methods, etc... */
};
Этот класс является частью API.
Foo_p - это все закрытые части класса, которые не являются
объявлен в самом классе Foo как обычно, а скорее в отдельном объявленном заранее классе, который используется только базовой реализацией, не видимой снаружи.
Я видел этот шаблон, использованный в нескольких проектах, есть ли название для него?
Кроме того, как мне правильно его использовать (например, безопасность исключений и т. Д.)? Куда должна идти фактическая реализация? В классе Foo, как обычно, используется только Foo_p для хранения данных, или в классе Foo_p, где Foo является просто оболочкой?