2012-07-06 79 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:为优化器提供了更多空间。