Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


4.5  Estructuras

§1  Sinopsis

Las estructuras C++ son una herencia de C; existen (se implementaron) por compatibilidad hacia atrás con el código del C clásico, pero en el contexto de C++ no tienen demasiado sentido ya que las clases ( 4.11), un concepto mucho más general, las engloban, dejándolas arrinconadas como un caso particular de un mundo mucho más rico y potente [1].

Nota: de hecho, las estructuras C++ son una especie de híbrido entre las estructuras C tradicionales (de las que son un superconjunto) y las clases C++, de las que son una variedad con propiedades muy específicas. Por ejemplo, todos los miembros son públicos ( 4.5a1).

Realmente el programador C++ no debería necesitar nunca utilizar estructuras como tales, ya que pueden ser sustituidas por clases definidas con ciertas peculiaridades. En concreto, las estructuras C pueden ser consideradas como un tipo especial de clases que no tienen métodos; el acceso por defecto es público, y para la clase base también es público por defecto. Sin embargo, puesto que las clases C++ disponen de tres tipos de modificadores de acceso: público, privado y protegido, el considerarlas como tales, permite un mayor control de acceso de las estructuras que el ofrecido por el C clásico.

De hecho, el programador que quiera mentalmente sustituir la palabra struct por class (sabiendo que es un tipo particular de clase), no necesita realmente estudiar este capítulo, siempre naturalmente que conozca a fondo el de las clases.


§2  Existen circunstancias en que las estructuras son especialmente importantes y útiles, ya sean consideradas en el sentido clásico de C, o en su versión como clases. Constituyen un medio excelente para agrupar un conjunto de elementos heterogéneos y manejarlos como un todo, facilitando así el manejo de datos complejos. Por ejemplo, las estructuras pueden ser pasadas como argumentos a funciones o devueltas por estas. También cuando se trata de almacenar y recuperar registros de datos en medios externos (disco por ejemplo). En estos casos son especialmente idóneas para escribir y recuperar información heterogénea en una sola operación de lectura/escritura.


§3  Como tales casos particulares de clases, las estructuras son tipos nuevos definidos por el usuario (nuevos en el sentido de que no están predefinidos en el lenguaje), que se engloban dentro de la categoría general de tipos derivados. Representan conjuntos de miembros que pueden ser a su vez de tipo básico ( 2.2.1) o derivado ( 2.2.2) -con ciertas restricciones que se señalarán más tarde-. Además también pueden ser miembros los campos de bits (este tipo no puede aparecer en ninguna otra parte 4.5.9).

En otros lenguajes se les denomina registros (records); sus componentes se denominan "miembros", aunque en ocasiones también se suelen llamar "campos".

Aparte de estos mecanismos opcionales de acceso y de las diferencias que se irán señalando, la explicación que sigue sobre la sintaxis y uso de estructuras es válida tanto para C como para C++.

  Inicio.


[1]  Las estructuras son innecesarias en C++ y en cualquier otro lenguaje que implemente el concepto de "Clase" de la POO. Por ejemplo, Eiffel, Java o Smalltalk carecen de ellas.