C + + class/struct 成员的默认可见性

在 C + + 中,为什么 private 是类成员的默认可见性,而 structs 是 public?

72293 次浏览

可能是为了向后兼容 C 结构。这样,在 C 代码中声明的结构在使用 C + + 代码时将继续以同样的方式工作。

C + + 是作为 C 的超集引入的,结构是从 C 继承过来的,其成员的语义是 public 的语义。存在大量的 C 代码,包括需要使用结构的库,这些库也需要与 C + + 一起工作。类是在 C + + 中引入的,为了符合 OO 的封装原理,它们的成员在默认情况下是私有的。

因为类是面向对象的一种常用方法,这意味着成员变量应该是私有的,并且具有公共访问器——这对于创建 低耦合很有帮助。另一方面,结构必须与 C 结构兼容,C 结构总是公有的(C 中没有公有和私有的概念) ,并且不使用访问器/变异器。

直接回答: 在 C + + 中,struct 的默认可见性是公共的,而类的默认可见性是私有的。