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.
Hay 454 opiniones. Opina sobre este curso.
| Cursos | Valoración | Alumnos | Vídeo | |
|---|---|---|---|---|
|
Funciones en C (primera parte) Curso de programacíon informática sobre Funciones en C en el orden de los fundamentos de la programación. Comprende el desarrollo de un software utilizando funciones y a ... [17/10/08] |
|
2.816 | ||
|
C# Curso de Programación Curso Básico de programación en C#, este curso básico abarcará desde las bases del lenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases de datos de... [14/07/05] |
|
8.486 | ||
|
Informática. Desarrollo científico del ordenador Ordenador, ciencia e informática son las claves de este curso. Conoce el desarrollo científico que hay detrás de una computadora u ordenado... [10/07/09] |
|
4.375 | ||
Publicar en
del.icio.us
digg
meneame