2013-10-29 134 views
0

我工作的地方有兩種截然不同的風格編碼:私有數據VS類成員變量

  1. 一些程序員會造成他們的工作和存儲成員數據變量存在的類中的一類。

  2. 其他聲明類中的成員變量並將它們標記爲私有。

我很好奇,哪一個更好,假設一個是。另外,創建一個私人課程會給你帶來什麼好處?這只是一箇舊學校vs新學校的東西嗎?

例如:

class CPOMSCTE104DeviceCOMHandler 
{ 
public: 
    //Stuff 

private: 
    class CPrivateData; 
    std::auto_ptr<CPrivateData> m_cPrivateData; //All member variables go in here 
    friend class CPrivateData; 
} 

謝謝!

+2

猶豫要舉報此事,但看起來好像它會太寬泛或是所有的意見都在這裏。 – UpAndAdam

+0

OP,您可以提供任何其他上下文來縮小主題空間嗎? I.E.這些東西用於什麼,這是發生在公開分發的標題與純內部代碼?他們在哪裏定義他們的'私人'類。聽起來像嘗試做不透明的指針和'pImpl'(私有實現)的種類,以便他們可以隱藏實現從界面。 – UpAndAdam

+0

請注意,您必須爲此課程提供用戶定義的析構函數,否則您將面臨未定義的行爲... –

回答

3

這種模式與嵌套私有類稱爲PIMPL方法

https://anteru.net/2009/03/14/385/

它被廣泛用於提高建築倍,從頭文件中額外的內存分配的開銷去除實現細節。

+0

這不僅僅是用來提高建築時間,特別是因爲它不一定能達到這個目標。它主要是隱藏和分離實現。在內存方面,它增加了一個不完全是高成本的指針。 – UpAndAdam