多次使用相同的c ++访问说明符

时间:2012-07-06 12:49:49

标签: 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.,

};

4 个答案:

答案 0 :(得分:2)

对于初学者来说,没有必要现在代码如何,这是必要的,因为代码部分可能:

  • 变得更长
  • 被剪切并粘贴到不同的顺序,甚至是不同的类,或复制到新的类
  • 有一些部分会更改访问说明符,而不会更改之前或之后的

如果您依赖的部分具有与上一部分相同的访问规范,那么很多时候(或者您,现在六个月或其他人)会在代码更改时忘记更改它,然后代码就会是错的。

答案 1 :(得分:1)

在查看比屏幕上的线条更多的方法时,这可能很有用,所以你只需看看,比如说

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

通过重复public:几次你可以提醒人们所有这些都是公开的(当然,你的终端中的线路比线路更多也意味着你的终端有点小或者班级太大)。

答案 2 :(得分:1)

这样做没有语言目的。我认为这是不好的风格。但有些人喜欢将某种特定类型的东西分成一个部分,然后将该部分划分为公共/受保护/私人区域。然后,当他们碰巧没有任何公共元素时,那么public关键字会被多余地重复。

我觉得它愚蠢。但有些人发现以这种方式组织代码很有用。

答案 3 :(得分: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:为优化器提供了更多空间。