【问题标题】:Why are there multiple "public" keywords in header file?为什么头文件中有多个“公共”关键字?
【发布时间】:2019-11-21 19:12:31
【问题描述】:

我是一名新程序员,所以请原谅我问了一个非常简单的问题。我正在查看我正在寻求实现的方法的一些示例代码,我看到下面看到的标题(第一个代码块)。

class CIndividual  
{

public:
    CIndividual();
    virtual ~CIndividual();

public:
         vector<int> profit;
       vector<int> weight;    

public:
    CRandomNumber Rnd;
    bool dominated;
};

为什么 public 被多次使用?我对这种编码结构感到非常困惑,希望这个问题不是太基础。

【问题讨论】:

  • 它们是多余的。第一个就足够了。目前尚不清楚作者为什么添加其他人;这不是常见的做法。
  • 唯一与多个 public 声明相关的情况是使用 Qt 之类的工具包,除了 public: 之外,您还可以看到 public slots:
  • 也许他们中的一些人曾经说私有或受保护,但是一个草率的维护者只是将其更改为公共而不是删除它。无论哪种方式,理想情况下都应该只有一份公开声明。
  • 可能是出于“可读性目的或如何为某些目的划分变量或函数。也许是公共的://内存。变量来存储特定的东西。//私有://内部使用的一些函数,公共的: // 一些可以使用的静态函数,或类似的东西。但理想情况下应该是一个 public: 并且可能有多个注释行,例如 // declaring mem. variables for.... // declaring functions for ... 或者也许like for public: // 这个类,public: // 继承的纯虚函数,需要实现等。

标签: c++ header-files access-modifiers


【解决方案1】:

在上面的情况下,只有 1 就足够了,第一个。其他都是多余的。有些人喜欢重写这些关键字来明确地“分隔块”方法和成员变量,但在这种情况下没有真正的需要。只是偏好问题。

class MyClass
{
public:
  void myPublicMethod1();
  void myPublicMethod2();

private:
  myPrivateMethod();

private:                         // redundant, just group variables
  int somePrivateVariable;       // the first "private" should be enough as well
  string anotherPrivateVariable;

public:                          // not redundant here, but the variables
  int publicMember1;             // could be moved to the first group, if desired.
  bool publicMember2;
};

【讨论】:

  • 太棒了!非常感谢!
猜你喜欢
  • 2011-04-04
  • 2013-06-03
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
相关资源
最近更新 更多