3.201 cursos gratis
6.233.243 alumnos
Publica tu curso gratis
Busca cursos gratis:
Estás aquí: mailxmail > Cursos de Informática > Programación > Programación en C++ > Estructuras y uniones

Programación en C++

Autor: Josue Diaz Cuenca
Curso:  4,45/5 4,45/5 (454 opiniones) |37985 alumnos|Fecha publicación: 04/06/2004
Capítulos del curso

Capítulo 9:

 Estructuras y uniones

Estructuras y uniones

Los tipos definidos por el usuario se definen como estructuras, uniones, enumeraciones o clases. Las estructuras y uniones son tipos de clase (clase, es el tipo de dato fundamental en la programación orientada a objetos).

El tipo struct permite agregar componentes de diferentes tipos y con un solo nombre. Las estructuras en C++ se declaran como en C:
struct datos
{
int num;
char nombre[20];
};

El nuevo tipo de dato definido puede tener instancias que se declaran:datos persona; //declaración C++struct datos persona; // declaración C

En C++ debe evitarse el uso de typedef.

El mismo convenio aplicado a las estructuras, se aplica a las uniones.

Un tipo especial de unión se ha incorporado a C++ :unión anónima. Una unión anónima declara simplemente un conjunto de elementos que comparten la misma dirección de memoria; no tiene nombre identificador y se puede acceder directamente a los elementos por su nombre.
Un ejemplo:
union
{
int i;
float f;
};

Tanto i como f comparten la misma posición de memoria. A los miembros de esta unión se puede acceder directamente en el ámbito en que está declarada. Por tanto, en el ejemplo, la sentencia i=3 sería aceptable.

Las uniones anónimas son interesantes en el caso en que se defina una unión en el interior de una estructura:
struct registro
{
union
{
int num;
float salario;
};
char *telefono;
};
registro empleado;

Para acceder al nombre de un campo dentro de esta estructura:

empleado.sueldo;

Asignación dinámica de memoria: new y delete

En C la asignación dinámica de memoria se manipula con las funciones malloc() y free(). En C++ se define un método de hacer asignación dinámica utilizando los operadores new y delete.

En C:
void main()
{
int *z;
z= (int*) malloc(sizeof(int));
*z=342;
printf("%d\n",*z);
free(z);
}

En C++:
void main()
{
int *z=new int;
*z=342;
cout << z;
delete z;
}

El operador new está disponible directamente en C++, de modo que no se necesita utilizar ningún archivo de cabecera; new se puede utilizar con dos formatos:new tipo // asigna un único elemento

new tipo[num_eltos] // signa un array

Si la cantidad de memoria solicitada no está disponible, el operador new proporciona el valor 0. El operador delete libera la memoria signada con new.
delete variable
delete [n] variable

new es superior a malloc por tres razones: 
1.- new conoce cuánta memoria se asigna a cada tipo de variable.
2.- malloc() debe indicar cuánta memoria asignar.
3.- new hace que se llame a un constructor para el objeto asignado y malloc no puede.

delete produce una llamada al destructor en este orden:
1. Se llama al destructor
2. Se libera memoria

delete es más seguro que free() ya que protege de intentar liberar memoria apuntada por un puntero nulo.

Recibe nuestras novedades
Al presionar "Recibir" estás dándote de alta y aceptas las condiciones legales de mailxmail

Hay 454 opiniones. Opina sobre este curso.

Descarga el PDF gratis

Cursos similares a Programación en C++


Cursos Valoración Alumnos Vídeo
Conmutación. Líneas de acceso (primera parte)
En este curso sobre líneas de acceso conmutado aprenderás qué es la conmutación y por qué surge. Conocerás la evolución histórica de estas tecnologías y los principales s... [31/10/08]
0/5 732  
Programar con Flash MX
Macromedia creo Flash 3, y con el introdujo un, hasta entonces, desconocido concepto en el mundo Flash, la programación. Primitivos play, stop y gotoAndPlay poblaron ento... [16/03/05]
 4,33/5 15.613  
Programa con Delphi
Con este curso aprenderemos a programar con delphi, un lenguaje de programación visual, con el que podrás aprender de una manera rápida e intuitiva.... [05/05/05]
 3,13/5 5.448  


Publicar en   del.icio.us    digg    meneame

¿Qué es mailxmail.com?|ISSN: 1699-4914|Recomiéndanos|Ayuda
Condiciones legales de mailxmail