70

在 C++ 中,为什么私有是类成员的默认可见性,而对于结构是公共的?

4

3 回答 3

97

C++ 是作为 C 的超集引入的。结构是从 C 继承而来的,其中成员的语义是公共的。存在大量 C 代码,包括希望与 C++ 一起使用的库,它们使用结构。类是在 C++ 中引入的,为了符合 OO 的封装哲学,它们的成员默认是私有的。

于 2009-08-08T01:56:52.323 回答
9

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

于 2009-08-08T01:57:27.127 回答
2

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

于 2009-08-08T01:56:40.480 回答