类定义中的多个 public/private 关键字

wiz*_*urd 6 c++ c++11

我在类定义中看到了多个 public 和 private 关键字,如下例所示:

class myClass
{
  public:
    void func1(){}
  public:
    void func2(){}
  private:
    int x;
    int y;
  private:
    int z;
    int baz;
};
Run Code Online (Sandbox Code Playgroud)

这个(如果有的话)的实际用途是什么?在任何情况下这可能有用吗?

Ali*_*Ali 5

在什么情况下这可能有用?

我可以想到一种情况,否则会出现很大问题:

 class myClass
{
  public:
    void func1(){}
  public:
    void func2(){}
  COORDINATES;    // <-- Note the macro here!
  private:
    int z;
    int baz;
};
Run Code Online (Sandbox Code Playgroud)

宏展开后COORDINATES,变为:

class myClass
{
  public:
    void func1(){}
  public:
    void func2(){}
  private:
    int x;
    int y;
  private:
    int z;
    int baz;
};
Run Code Online (Sandbox Code Playgroud)

如果不允许使用多个private/关键字,那么做起来会非常痛苦。public尽管使用宏并不是一个好习惯;也不是为宏后面出现的所有成员默默地引入访问修饰符。尽管如此,它对于生成 C++ 源代码的 RAD 工具可能很有用。

我只能猜测为什么你会在人类书面课程中看到这一点。我的猜测是,这是糟糕的编码;作者可能想要表达一块数据属于一起和/或希望能够在类定义中上下移动这些数据块以及相应的访问修饰符 ( private/protected/public)。