在 public、protected 和 private 之外声明的类成员函数

tam*_*m63 2 c++ class member

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

class SomeClass {
   void SomeFunction();

public:
   ~~ public members
}
Run Code Online (Sandbox Code Playgroud)

班级中没有私人或受保护的成员。

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

pro*_*-fh 5

class在 C++ 中,和 之间的区别struct在于,对于 a structeverything 都是隐式的public,对于 a classeverything 都是隐式的private

一旦您显式使用public:private:或者 protected:对于以下成员,这两种情况下的行为都是相同的。

关于继承也是如此。
struct A : B是公共继承。
class A : B是私人继承。

在您的示例中,SomeFunction()位于 的隐式 部分class,因此被视为private

一位备受尊敬的 C++ 专家认为这种声明(隐式private)是一种很好的做法。
https://howardhinnant.github.io/classdecl.html