En C ++ y otros lenguajes influenciados hay una construcción llamada Estructura ( struct
), y otra llamada class
. Ambos son capaces de mantener funciones y variables. Algunas diferencias son:
- A la clase se le da memoria en el montón y
struct
se le da memoria en la pila (observación: esto es incorrecto para C ++, pero tal vez sea correcto en lo que el OP llamó "lenguajes influenciados") - Las variables de clase son privadas por defecto y en
struct
ellas son públicas
Mi pregunta es: ¿fue struct
abandonado de alguna manera por la clase? Si es así, ¿por qué? Aparte de las diferencias anteriores, a struct
puede hacer las mismas cosas que hace una clase. Entonces, ¿por qué abandonarlo?
c++
object-oriented
prometheuspk
fuente
fuente
Respuestas:
No se abandona en absoluto. De hecho, incluso los lenguajes modernos como C # que hacen un uso intensivo de
class
todavía te ofrecenstruct
. En cuanto a cuándo es útil elegir uno sobre el otro, lo remito a este artículo:Elegir entre clases y estructuras
Citado del artículo de MSDN:
fuente
Está equivocado acerca de C ++: la única diferencia significativa entre clase y estructura es la diferencia del especificador de acceso predeterminado. Struct y class son sinónimos para todos los propósitos, creo que struct se mantiene para compatibilidad con C.
fuente
el lenguaje D ha creado una mayor distinción entre clase y estructura
una estructura en d no es más que un registro de datos asignado por pila con algunas funciones a las que puede recurrir (no hay opción de herencia a menos que use una configuración enum + union, es decir, implemente el polimorfismo usted mismo) que se pasa por valor
una clase es como estamos acostumbrados: funciones virtuales, asignación de montón, herencia (única), aprobada por ref
fuente