我通常会尝试安排类的声明,以便其他人可以轻松使用该类。
通常是这样的:public/protected/private
,按此顺序,因为它简化了读者的生活。
- 使用该类的人可以在到达
protected
标签后停止阅读,之后的任何事情都与他们无关。
- 从类派生的人一旦到达
private
标签就可以停止阅读,之后的任何内容都是实现细节。
再加上不在声明点编写方法的代码,这使得界面易于阅读。
但是有几个技巧:
- 在使用元模板编程时,您可能需要先声明类型,然后再声明方法,因此您最终会得到 2 系列
public/protected/private
- 当使用Key idiom(而不是
friend
)时,您有一个public
实际上只专用于一小部分用户的部分,最好在普通public
部分的底部或在该protected
部分之后隔离。
Finally, as to comment about the layout issue among the attributes. Encapsulation means that attributes should be private
. So, either you have a struct
and everything is public
or you have a class and everything is private
, mixing the two means breaking encapsulation, and that's a bug in the making.