¿hay alguna diferencia entre una estructura en C++ y una estructura en C#?¿hay alguna diferencia entre una estructura en C++ y una estructura en C#?
Respuesta
En C# se utilizan estructuras para definir tipos de valores (a diferencia de los tipos de referencia declarados por class
es).
En C++, una estructura es lo mismo que una clase con un nivel de accesibilidad predeterminado de public
.
Entonces la pregunta debería ser: son estructuras en C# diferentes de las clases en C++ y, sí, son: no se puede derivar de estructuras C#, no se pueden tener funciones virtuales, no se pueden definir constructores predeterminados, no se tiene destructores, etc.
Las estructuras en C# muy diferente de clases, consulte Structs vs Classes para más
Las estructuras en C++ son idénticas a las clases, excepto que los miembros son públicos por defecto. Aparte de eso, una estructura C++ puede hacer todo lo que una clase de C++ puede hacer.
Las estructuras de C# pueden tener constructores; simplemente no pueden tener un constructor * predeterminado *. –
Marc: Descubriste mi error intencional allí, bien hecho. . . PD. Lo arreglé :) –
@Marc: Siempre tienen un constructor predeterminado, no puedes definir el tuyo propio :-) – MartinStettner
Sí.
estructuras en C# son el viejo y simple, por valor, tipos de datos (a diferencia de clases que están por referencia y tienen ll las cosas OO)
structs en C++ son igual clase que son públicos por defecto.
¿Está tratando de interoperar entre C++ administrado y C#? Si es así, hay extensiones de C++ para permitir esto: vea link
Una estructura C# es un código administrado, que será liberado por la basura C# cuando ya nadie se refiera a él. Se llama su destructor cada vez que el recolector de basura decide limpiarlo.
Una estructura de C++ es un objeto no administrado, que debe limpiar usted mismo. Como es predecible, se llama al destructor cuando lo eliminas o queda fuera del alcance.
Las estructuras de C# no son objetos; no están * ellos mismos * sujetos a la recolección de basura (a menos que sean campos de un tipo que * es * basura recolectada, es decir, una clase). Las estructuras de C# no pueden definir un finalizador: "Error 1 Solo los tipos de clases pueden contener destructores" –
Buen punto sobre el finalizador. Pero las estructuras son objetos, creo: "MyStruct es un objeto" devuelve verdadero. Y alguien tiene que liberar la memoria que usa la estructura; el recolector de basura lo hará, si la estructura está en el montón. – Andomar
- 1. C estructura y C++ estructura
- 2. Diferencia entre -> y. en una estructura?
- 3. matrices multidimensionales en una estructura en C#
- 4. Estructura vacía en C vs estructura vacía en C++
- 5. ¿Puedo destruir una estructura en C++?
- 6. Asignar una estructura a otra en C
- 7. Estructura en una estructura
- 8. Inicializar y devolver una estructura en una línea en C++
- 9. Reenviar declarar una estructura en Objective-C
- 10. Leyendo archivo en una estructura (C++)
- 11. ¿Hay una estructura en Python similar al mapa C++ STL?
- 12. ¿hay alguna diferencia entre [Serializable] y [Serializable()] en C#?
- 13. ¿Hay alguna manera de aplicar una función a cada miembro de una estructura en C++?
- 14. estructura vacía en C
- 15. ¿Puedo 'extender' una estructura en C?
- 16. ¿Hay alguna diferencia entre BOOL y Boolean en Objective-C?
- 17. Vim autocompletar una estructura en C
- 18. ¿Cómo asignar una estructura C en línea?
- 19. casting una estructura de C en otro
- 20. cómo definir una estructura como en C
- 21. ¿Qué es una estructura "empaquetada" en C?
- 22. Definir una estructura en C con Malloc
- 23. Estructura estática en C++
- 24. C++ ¿cómo eliminar una estructura?
- 25. Inicializando una estructura global en C
- 26. cómo inicializar una estructura estática en C++?
- 27. estructura estática en C/C++
- 28. Estructura local en c
- 29. ¿Cuál es la diferencia entre declarar y definir una estructura?
- 30. ¿Hay alguna estructura de datos de gráfico implementada para C#
El punto de Martin sobre las estructuras de C# que son tipos de valores es bastante importante para el rendimiento porque tienen que estar en caja y sin caja para algunas operaciones. Lea sobre "boxeo" si debe preocuparse por el rendimiento. – dss539