uso structs initialize example array c++ c

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 ++

  1. 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.

  2. 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 ++)

  3. 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.

  4. La estructura en C no puede tener miembros estáticos mientras que en C ++ la estructura puede tener miembros estáticos.

  5. El tamaño de la estructura vacía es una violación de restricción en C, pero siempre es 1 en C ++.

  6. 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.