Autor

Alejandro Alcalde

Graduado en Ingeniería Informática en la ETSIIT, Granada. Creador de El Baúl del Programador

Más artículos de Alejandro Alcalde

Introducción

Un array sirve para guardar un conjunto de entidades pertenecientes a la misma clase. Para reservar espacio en memoria para un array, y para liberar la memoria, se ha de llamar a las funciones operator new[]() y operator delete[](), respectivamente. En este caso, new no acepta inicializadores. Por ejemplo, en la siguiente porción de código se reserva espacio en memoria para un array de 3 enteros. Se inicializan, se usan, y por último, se libera dicho espacio en memoria reservado cuando ya no se precisa más el array.


¿Te gusta el blog? Ayúdame a seguir escribiendo


//se reserva espacio en memoria para un array de 3 elementos
int* ip=new int[3];
//se inicializan los elementos del array
ip[0]=1;
ip[1]=2;
ip[3]=3;
//... se usa el array
//se libera la porción de memoria reservada
delete[] ip;

Lo mismo podremos hacer para un array de caracteres, que puede guardar hasta un máximo de 20.

char* cp= new char[20];
strcpy(cp, esto es una cadena);
//... se usa el array
delete[] cp;

Array de objetos

Primero reservamos espacio para un array de tres objetos de la clase Punto. Luego inicializamos dichos objetos, llamando al constructor. Hacemos uso de los objetos, y por último, liberamos el espacio de memoria reservada.

//reserva espacio para tres elementos
Punto* objs= new Punto[3];
//inicializa los elementos del array
objs[0]=Punto();
objs[1]=Punto(+,40,5);
objs[2]=Punto(60,10);
//desde cada elemento se llama a las funciones miembro
objs[1].mostrar();
//destructor del array
delete[] objs;
//llama tres veces al destructor

Array de punteros a objetos

Primero reservamos espacio para un array de tres punteros a objetos de la clase Punto. Luego asignamos las direcciones de los objetos creados a los elementos del array, hacernos uso de los punteros a objetos, y por último, liberamos el espacio de memoria reservada, destruyendo cada elemento del array, y el array mismo.

//reserva espacio para tres elementos
Punto** pObjs=new Punto*[3];
//inicializa los elementos del array
pObjs[0l=new Punto(10, 20);
pObjs[l]=new Punto('+', 40, 5);
pObjs[2]=new Punto(‘@’, 60, 10);
//desde cada elemento se llama a las funciones miembro
//pObjs[1] mostrar();
//destrucción del array
for (int i=0; i<3; i++)
   delete pObjs[i];
delete[] pObjs;

Moverse por el array

Punteros y arrays están íntimamente relacionados por las reglas de la aritmética de punteros. El compilador interpreta el nombre de array corno un puntero a su primer elemento. Es decir, si objs es el nombre del array, objs es equivalente a &objs[0]. Por las reglas de la aritmética de punteros, si se añade un entero i al nombre de un array, el resultado es un puntero al elemento i del array: esto es, objs+i es equivalente a &objs[i]. Esta equivalencia la podemos expresar mediante la regla:

*(objs+i) //es equivalente a objs[i]

Podemos usar los operadores unarios ++ y -- para acceder a elementos consecutivos del array objs del siguiente modo:

//objs es objs[0]
objs++;          //avanza a objs[1]
objs++;          //avanza a objs[2]
objs--;          //retrocede a objs[1]

Clases y Objetos. Pasar un objeto a una función

¿Has visto algún error?: Por favor, ayúdame a corregirlo contactando conmigo.

Categorías:Etiquetas:

Quizá también te interese leer...