在C ++中,默认情况下,类中的所有数据成员都是私有的吗?
答案 0 :(得分:18)
The Design and Evolution of C++
2.10保护模式
开始使用C之前的工作 上课,我一直在操作 系统。保护的概念 来自剑桥CAP计算机和 类似的系统 - 而不是任何工作 在编程语言中 - 受到启发 C ++保护机制。该 阶级是保护的单位 根本规则是,你不能 授予自己访问课程的权利;只要 放在课堂上的声明 声明(据称由其所有者) 可以授予访问权限默认情况下,全部 信息是私人的。
答案 1 :(得分:16)
因为最好是正确封装并且只打开所需的东西,而不是默认打开所有东西并且必须关闭它。
封装(信息隐藏)是一个好的东西,就像安全性(例如,锁定网络服务)一样,默认应该是好的而不是坏的。
答案 2 :(得分:6)
因为否则class
和struct
之间根本没有区别?
答案 3 :(得分:4)
原因是类的公共部分应该明确公开。
有趣的是(对我而言)是许多类定义的开头大括号之后的第一行是public:
。一个类的大多数读者都对公共位感兴趣,因为这是他们与之交互的内容,所以很多类定义都有他们的公共位。无论如何。
C ++的访问说明符适用于它们之后的范围 - 我认为Java和C#的技术是让每个成员指定成员的可见性(具有合理的默认值)是优选的。
答案 4 :(得分:2)
总之,封装。目标是将私有实现细节(例如数据成员)设为私有。只有明确的公共API可供该类客户使用。