c++ - structs - typedef struct c
Estructura C y estructura C++ (6)
Además de las respuestas anteriores, recuerde que las estructuras C ++ admiten la herencia y, por lo tanto, pueden contener punteros a vtables. Esto puede marcar una gran diferencia al serializar y deserializar estas estructuras en todos los procesos. Las plantillas son compatibles también.
¿Alguien podría decirme cuál es la principal diferencia entre las estructuras de C & C ++?
C estructuras es más similar a una definición de una estructura de datos compuesta
Las estructuras de C ++ se pueden considerar como una clase, pero el alcance de todas las variables miembro se establece como predeterminado en público.
C: no podemos definir la función dentro de la estructura en c.
C ++: Podemos definir la función dentro de la estructura en c ++.
En C ++, las estructuras se comportan como clases, permitiendo métodos, constructores, destructores, etc.
La principal diferencia entre las clases y las estructuras de C ++ es que todo lo que se encuentra dentro de las estructuras es público por defecto, mientras que todo dentro de las clases es privado por defecto. (es decir: nada externo puede acceder a ellos directamente)
Hay varias diferencias en la estructura C y C ++
En C definimos que la palabra clave struct es necesaria para crear el valor del tipo de estructura, mientras que en C ++ no es necesario.
En C no hay función dentro de la estructura, mientras que en C ++ podemos definir la función que puede acceder directamente a los miembros de datos de la estructura (la función es el nombre como método en C ++)
No existe un concepto de modificador de acceso dentro de la estructura en C, mientras que en C ++ podemos encontrar el modificador de acceso (por ejemplo, privado y público). Por defecto, todos son públicos.
La estructura en C no puede tener miembros estáticos mientras que en C ++ la estructura puede tener miembros estáticos.
El tamaño de la estructura vacía es una violación de restricción en C, pero siempre es 1 en C ++.
Podemos tener tanto punteros como referencias a struct en C ++, pero solo se permiten punteros a structs. (Las referencias no son características del lenguaje C)
En C ++, la struct
y la class
son exactamente lo mismo, a excepción de que la estructura predeterminada es public
visibilidad public
y la clase predeterminada para private
visibilidad private
.
En C, los nombres de las estructuras están en su propio espacio de nombres, por lo que si tienes struct Foo {};
, debes escribir struct Foo foo;
para crear una variable de ese tipo, mientras que en C ++ puedes escribir solo Foo foo;
, aunque el estilo C también está permitido. Los programadores de C generalmente usan typedef struct {} Foo;
para permitir la sintaxis de C ++ para las definiciones de variables.
El lenguaje de programación C tampoco admite restricciones de visibilidad, funciones de miembros o herencia.