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

时间:2009-08-08 01:52:57

标签: c++ class struct member

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

3 个答案:

答案 0 :(得分:77)

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

答案 1 :(得分:9)

因为类是进行面向对象的常用方法,这意味着成员变量应该是私有的并且具有公共访问器 - 这对于创建low coupling是有益的。另一方面,结构必须与C结构兼容,C结构总是公开的(C中没有公共和私有的概念),并且不使用访问器/变换器。

答案 2 :(得分:1)

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