¿Podría alguien decirme cuál es la principal diferencia entre C & C++ estructuras.C estructura y C++ estructura
Respuesta
En C++ struct
y class
son exactamente lo mismo, a excepción de que struct por defecto public
de visibilidad y de clase por defecto private
del visiblity.
En C, nombres struct están en su propio espacio de nombres, por lo que si usted tiene struct Foo {};
, tiene que escribir struct Foo foo;
para crear una variable de ese tipo, mientras que en C++ se puede escribir simplemente Foo foo;
, aunque también se permite el estilo C . Los programadores de C usualmente usan typedef struct {} Foo;
para permitir la sintaxis de C++ para las definiciones de las variables.
El lenguaje de programación C tampoco admite restricciones de visibilidad, funciones de miembros o herencia.
En C++ los nombres de las estructuras también están en su propio espacio de nombres. La diferencia es que al buscar un identificador, el compilador buscará primero en el espacio de nombre general, y si no lo encuentra, también comprobará el espacio de nombre de las clases definidas por el usuario. En C++, su es correcto: 'struct x {}; void x() {} 'mientras que esto no es' typedef struct x {} x; void x() {} ', como el espacio identificador global ya tiene un' x' (typedef), la declaración de la función colisionará (Por cierto, en el primer ejemplo, para crear una variable necesitas escribir 'struct x var' de modo que el identificador solo se busca como un tipo definido por el usuario). –
En C++, las estructuras se comportan como clases, permitiendo métodos, constructores, destructores, etc ...
La principal diferencia entre clases y estructuras de C++ es que todo el interior de las estructuras es pública por defecto, mientras que todo el interior de las clases es privado de forma predeterminada. (Es decir: nada fuera puede acceder a ellos directamente)
De acuerdo con mi CS prof, otra diferencia entre structs y classes es "no se puede fallar una estructura" –
C estructuras es más parecido a una definición de una estructura de datos compuesta
estructurasC++ pueden ser considerados como una clase, pero el alcance de todas las variables de los miembros de incumplido al público .
Además de las respuestas anteriores, recuerde que las estructuras C++ admiten 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.
En lugar de mencionar los vtables (que no están en la especificación del lenguaje C++), debe mencionar los métodos 'virtuales'. –
El mejor proceso para serializar y deserializar estructuras es tener una funcionalidad que acceda a los campos de datos (miembros) individualmente. Se aplica a los idiomas C y C++. Una razón principal es que el compilador tiene permitido agregar relleno entre los miembros (se aplica a ambos idiomas). –
En C, el relleno es solo una cuestión de unos pocos bytes no utilizados cuando los datos se serializan y se deserializan en su representación binaria. Con C++, puede crear problemas al usar objetos de clases con funciones virtuales. –
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++.
hay varias diferencias en la estructura de C y C++
En C definimos la palabra clave struct es necesario crear el valor de tipo de estructura, mientras que en C++ no es necesario.
En C no hay ninguna función dentro de la estructura, mientras que en C++ podemos definir la función que pueden acceder los miembros de datos de la estructura directamente (función es nombres como método en C++)
no existe el concepto de acceso modificador 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 la violación de la 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 las estructuras.(Referencias no son función del lenguaje C) estructuras
¿Puedes explicar el punto 1? Entendí lo que querías decir aquí. – user3728501
En C tenemos que escribir la palabra clave struct cuando declaramos una variable del tipo de estructura. Ejemplo: Struct ABC var1, var2; Mientras que C++ se acerca para minimizar la brecha entre el tipo de datos derivados y el tipo de datos incorporado. Entonces, como definimos int o char, aquí podemos declarar la variable de estructura directamente como: Ejemplo: ABC var1, var2; –
Ah bien sí Entiendo que quisiste decir, también debes escribir struct para declarar nuevas variables – user3728501
- 1. estructura estática en C/C++
- 2. C/C++ Desplazamiento de estructura
- 3. Estructura vacía en C vs estructura vacía en C++
- 4. estructura vacía en C
- 5. Estructura estática en C++
- 6. estructura Externo en C
- 7. Estructura local en c
- 8. Problema con estructura y propiedades en C#
- 9. C++: estructura y la nueva palabra clave
- 10. ¿hay alguna diferencia entre una estructura en C++ y una estructura en C#?
- 11. Resumen/Estructura base en C++?
- 12. estructura src/carpeta en C++?
- 13. Objetivo C ¿Clase o estructura?
- 14. Relleno de estructura en C++
- 15. C++ 11 Estructura correcta inicialización
- 16. C++ ¿cómo eliminar una estructura?
- 17. Extraiga los campos de una estructura C
- 18. Vim autocompletar una estructura en C
- 19. C typedef de puntero a la estructura
- 20. Devolver estructura de la función (C)
- 21. C++ Pregunta de puntero de estructura
- 22. "Sobrecarga" de Clase vs Estructura en C#?
- 23. Optimización de estructura de compilador C
- 24. C++ derive pure abstract w/estructura anidada
- 25. ¿Cómo asignar una estructura C en línea?
- 26. C - Cómo implementar Establecer estructura de datos?
- 27. Reenviar declarar una estructura en Objective-C
- 28. Estructura de directorios para una biblioteca C++
- 29. C++: ¿Se copiará la estructura correctamente?
- 30. C# matriz dentro de una estructura
C no pueden contener métodos mientras que las estructuras de C++ puede :) – vpram86
estructuras C se utilizan básicamente para agrupar los datos. – Ashish
C++ estructuras admiten herencia. :) –