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

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

C ++被引入作为C的超集。结构从C中inheritance下来,其成员的语义是公共的。 存在大量的C代码,包括需要使用C ++的库,也使用结构。 C ++引入了类,为了符合OO的封装哲学,它们的成员默认是私有的。

因为一个类是做对象定向的常用方法,这意味着成员variables应该是私有的并且具有公共访问器 – 这对创build低耦合是有利的。 另一方面,结构必须与C结构兼容,C结构总是公共的(C中没有公共和私有的概念),并且不使用访问者/变种者。

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