C ++类/结构成员的默认可见性

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

S I asked 2020-01-13T19:58:35Z
3个解决方案
82 votes

C ++是作为C的超集引入的。结构是从C继承而来的,其成员的语义是公共的。 存在大量的C代码,包括使用结构的C ++库。 类是用C ++引入的,并且与OO封装哲学一致,它们的成员默认情况下是私有的。

Oren Trutner answered 2020-01-13T19:58:54Z
9 votes

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

a_m0d answered 2020-01-13T19:59:14Z
1 votes

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

Karl Voigtland answered 2020-01-13T19:59:34Z
translate from https://stackoverflow.com:/questions/1247745/default-visibility-of-c-class-struct-members