Class Versus Struct

12

En C ++ y otros idiomas influenciados hay una construcción llamada Structure ( struct ), y otra llamada class . Ambos son capaces de mantener funciones y variables. Algunas diferencias son:

  1. La clase recibe memoria en el montón y struct tiene memoria en la pila (observación: esto es incorrecto para C ++, pero tal vez correcto en lo que el OP llamó "idiomas influenciados")
  2. Las variables de clase son privadas de forma predeterminada y en struct son públicas

Mi pregunta es: ¿se abandonó de alguna manera el struct para la Clase? Si es así, ¿por qué? Aparte de las diferencias anteriores, un struct puede hacer las mismas cosas que hace una clase. Entonces, ¿por qué abandonarlo?

    
pregunta prometheuspk 30.07.2011 - 11:56

3 respuestas

11

No está abandonado en absoluto. De hecho, incluso los lenguajes modernos como C # que hacen un uso intensivo de class todavía le ofrecen struct . En cuanto a cuándo es útil elegir uno sobre el otro, le remito a este artículo:

Cómo elegir entre clases y estructuras

Citado del artículo de MSDN:

  

Considere definir una estructura en lugar de una clase si las instancias de   Los tipos son pequeños y, por lo general, son de corta duración o se incluyen comúnmente en   otros objetos.

     

No defina una estructura a menos que el tipo tenga todo lo siguiente   características:

     
  • Lógicamente representa un solo valor, similar a los tipos primitivos   (entero, doble, etc.).
  •   
  • Tiene un tamaño de instancia inferior a 16 bytes.
  •   
  • Es inmutable.
  •   
  • No tendrá que ser encuadrado con frecuencia.
  •   
    
respondido por el blubb 30.07.2011 - 12:04
17

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, para todos los propósitos, y sinónimos, creo que la estructura se mantiene por compatibilidad con C hacia atrás.

    
respondido por el Joris Timmermans 30.07.2011 - 12:00
2

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 de pila asignada con algunas funciones a las que puede acceder (no hay ninguna opción para la herencia a menos que use una configuración de enum + union, es decir, implemente el polimorfismo usted mismo ) que se pasa por valor

una clase es como estamos acostumbrados a: funciones virtuales, asignación de pila, herencia (única), aprobada por ref

    
respondido por el ratchet freak 30.07.2011 - 15:05

Lea otras preguntas en las etiquetas