假设我有这样的(简化的)类:这是什么设计模式?如何使用它?
class Foo_p;
class Foo
{
private:
Foo_p *p;
public:
Foo();
/* methods, etc... */
};
这个类是API的一部分。 Foo_p是类的所有私有部分,它们不是像往常一样在类Foo中声明的 ,而是在一个单独的前向声明类中,仅在底层实现中使用,而外部不可见。
我见过这个模式用于几个项目中,有没有一个名称?
另外,如何正确使用它(例如安全等例外)?实际执行到哪里去?在类Foo中,像往常一样,只使用Foo_p存储数据,或者在Foo_p类中使用Foo作为包装器?
请勿将头和普通防护级别(公/私)“基本上隐藏实现”? – 2012-01-31 20:31:07
@Matthew:不幸的是,没有。你必须包含实现头文件,当他们依赖于例如Windows头文件时,这些头文件通常会很不舒服,这些头文件很糟糕。 – Puppy 2012-01-31 22:41:56
@MatthewFlaschen:是的,但只是在您无法访问它的意义上,但您在查看代码时仍然可以*看到它。 – bitmask 2012-01-31 22:42:39