我遇到了一些看起来像这样的代码:
class SomeClass {
void SomeFunction();
public:
~~ public members
}
Run Code Online (Sandbox Code Playgroud)
班级中没有私人或受保护的成员。
我的问题是;没有标记“SomeFunction”类的哪一部分属于糟糕的编程?或者以这种方式定义函数是否隐式地将其分配给类的某些部分,即私有或受保护的部分,因为它不是公共成员的一部分?
class
在 C++ 中,和 之间的区别struct
在于,对于 a struct
everything 都是隐式的public
,对于 a class
everything 都是隐式的private
。
一旦您显式使用public:
,private:
或者
protected:
对于以下成员,这两种情况下的行为都是相同的。
关于继承也是如此。
struct A : B
是公共继承。
class A : B
是私人继承。
在您的示例中,SomeFunction()
位于 的隐式
部分class
,因此被视为private
。
一位备受尊敬的 C++ 专家认为这种声明(隐式private
)是一种很好的做法。
(https://howardhinnant.github.io/classdecl.html)