假設我有這樣的(簡化的)類:這是什麼設計模式?如何使用它?
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