【问题标题】:Class member function declared outside of public, protected and private在 public、protected 和 private 之外声明的类成员函数
【发布时间】:2020-07-31 22:25:20
【问题描述】:

我遇到了一些看起来像这样的代码:

class SomeClass {
   void SomeFunction();

public:
   ~~ public members
}

该类没有私有或受保护的成员。

我的问题是;没有标记“SomeFunction”属于不良编程的类的哪一部分?或者以这种方式定义函数是否隐含地将其分配给类的某些部分,即私有或受保护,因为它不是公共成员的一部分?

【问题讨论】:

  • class 默认为私有(struct 为公开)。
  • belongs to bad programming - 不,它没有。你可以假设这是一个众所周知的事实。它已经在 C++ 中使用了几十年。每个教程/课程都涵盖了这一点,所以每个人都应该知道。甚至其他语言也有类似的规则。但是,您正在/将要工作的公司/团队/等,可能有一些受监管的“编码风格”,它可能只是告诉你“即使它已经是默认的,你也应该写那个 PRIVATE”,只是为了保持代码的统一和简单为初学者阅读。但即便如此,保持原样并依赖默认的知名语言特性当然不是“糟糕的编程”。

标签: c++ class member


【解决方案1】:

在 C++ 中,classstruct 之间的区别在于 对于struct,一切都隐含地为public,对于 class 一切都是隐含的private

只要您明确使用public:private:protected: 两种情况下的行为相同 为以下成员。

继承也是如此。
struct A : B 是公共继承。
class A : B 是私有继承。

在您的示例中,SomeFunction()隐式 class 的一部分,所以被认为是private

一位非常受尊敬的 C++ 专家认为这种类型 声明(隐式 private)作为一种良好做法。
(https://howardhinnant.github.io/classdecl.html)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2021-05-11
    • 2017-08-21
    • 1970-01-01
    相关资源
    最近更新 更多