2012-07-06 74 views
1

當下一行恰好在其下方或其下方几行時,一次又一次地聲明多個「public」說明符的目的是什麼?當代碼修改某些標識符的屬性時,我可以理解這是必需的,也就是說,這些標識符被隱藏在一個宏中(因此改變了宏內的訪問屬性,所以我們需要「重新定義」從宏中出來),或者當每個訪問說明符部分有許多標識符時。但是一次又一次地繼續使用「公共」,「公共」的目的是什麼?使用相同的C++訪問說明符多次

代碼...

class CDrawMFCView : public CView 
{ 
protected: // create from serialization only 
    CDrawMFCView(); 
    DECLARE_DYNCREATE(CDrawMFCView) 

// Attributes 
public: 
    CDrawMFCDoc* GetDocument() const; 

// Operations 
public: 

// Overrides 
public: 
    virtual void OnDraw(CDC* pDC); // overridden to draw this view 
    virtual BOOL PreCreateWindow(CREATESTRUCT& cs); 
protected: 
    // etc., 

}; 
+0

沒有理由。它們只是稍後添加的代碼的佔位符。 – 2012-07-06 12:54:40

回答

2

對於初學者來說,這是沒有必要的代碼怎麼現在,它是必要的,因爲代碼段可能:

  • 成爲了很多時間
  • 進行剪切和粘貼到不同的順序,或甚至分成不同的類,或者複製到一個新的類
  • 有部分路段改接符不上一個或下那些改變

如果你依賴的部分公頃根據前面章節的相同訪問規範,很多時候你(或者你,從現在開始的六個月或者其他人)會忘記在代碼改變的時候改變它,然後代碼就會出錯。

1

看着比屏幕上的線條更方法的類時,這可能是有用的,所以你只要看看,說

... 
void f(); 
void g(); 
void h(); 
... 

通過重複public:有幾次你可以提醒人們所有這些都是公開的(當然,你的終端有更多的方法而不是線路,這意味着你的終端有點小或者班級太大)。

1

這樣做沒有語言目的。我認爲這是不好的風格。但有些人喜歡將某種特殊的東西分成一個部分,然後將部分劃分爲公共/保護/私人區域。然後,當他們沒有碰到公共元素時,公共關鍵字會重複地重複。

我覺得它很笨。但是有些人認爲以這種方式組織他們的代碼很有用。

1

只有一個正式原因:訪問說明符之間的數據成員在內存中按順序排序,但跨訪問說明符的數據成員可能會在內存中重新排序。

class Foo { 
    public: 
    int a; 
    int b; // Must come after a 
    public: 
    int c; // Does not have to come after a and b. 
}; 

第二個public:爲優化器提供了更多空間。