2009-08-08 25 views

Respuesta

61

C++ se introdujo como un superconjunto de C. Structs se trasladaron desde C, donde la semántica de sus miembros era la de público. Existe una gran cantidad de código C, incluidas las bibliotecas que se desea trabajar con C++ también, que utilizan estructuras. Las clases se introdujeron en C++, y para ajustarse a la filosofía de encapsulación OO, sus miembros son privados por defecto.

+0

Bueno, para ser justos, no es estrictamente necesario que la encapsulación sea para todos los miembros privados. Con C++ en línea, los métodos de acceso pueden ser muy baratos, pero en muchos lenguajes de programación orientada a objetos dada la sobrecarga de una llamada a función, las personas tienden a utilizar el acceso público ya que es más barato. Para un control más fino, uno puede usar declaraciones de propiedades si su idioma lo admite. Sin embargo, en el código nativo, el seguimiento de los cambios de las variables es más difícil que los idiomas administrados, por lo que tiene sentido establecer los atributos a través de un único punto en el código. – progician

1

Probablemente por compatibilidad con versiones anteriores con estructuras C. De esta forma, las estructuras declaradas en código C continuarán funcionando de la misma manera cuando se utilicen en el código C++.

7

Porque una clase es una forma habitual de hacer orientación a objetos, lo que significa que las variables miembro deben ser privadas y tener acceso público: esto es bueno para crear low coupling. Las estructuras, por otro lado, tienen que ser compatibles con las estructuras C, que son siempre públicas (no hay ninguna noción de público y privado en C), y no usan accesadores/mutadores.

Cuestiones relacionadas