Objetos memoria dinamica

Páginas: 5 (1108 palabras) Publicado: 12 de septiembre de 2015
Objetos y memoria dinámica

1. Punteros a objetos
2. Vectores dinámicos de objetos
3. Uso de objetos dinámicos
4. Atributos dinámicos
5. Creación de objetos con atributos dinámicos
6. Destrucción de objetos con atributos dinámicos
7. Operador de asignación para objetos con atributos dinámicos

1

Objetos y memoria dinámica
Punteros a objetos
En C++ podemos definir punteros a objetos, ya que lasclases son tipos,
y podemos declarar punteros de cualquier tipo.
int *p1;
char *c ;
fecha * f;

Por tanto, para la clase Punto, podemos tener:

class Punto
{
private:
int coorx ;
int coory ;
public:
...
};

Punto *p1;

=p

Esta declaración, no llama al constructor ya que
es un puntero, no un Punto.
..
101
100

2

Objetos y memoria dinámica
Punteros a objetos
Para trabajar con el puntero, podemosasignarle la dirección de memoria
de un objeto de tipo Punto.
class Punto
{
private:
int coorx ;
int coory ;
public:
Punto(int a, int b);
int acc_x( );
int acc_y( );
void mu_x( int a);
void mu_y( int a);
void visualizar( );
};

Punto c(2,3);
Punto *p1;
p1 = &c;
p1->visualizar();
(*p1).visualizar();
p1->mu_y(8);

=p
998
997

c=

= coorx

2
5

= coory

0000001

3

Objetos y memoria dinámica
Punterosa objetos
También podemos usar otras facilidades de las variables dinámicas como
son los operadores new y delete.
Punto *p1, *p2;
p1 = new Punto();
p2 = new Punto(3,4);
delete p2;

Constructor que
queremos que se ejecute

El operador new sigue los siguientes pasos:
1. Crea espacio para el objeto.
2. Llama al constructor especificado.
El operador delete realiza los pasos inversos:
1. Llama aldestructor.
2. Libera la memoria ocupada por el objeto.
4

= p1
= p2

998
997

3
4
0
0
0000001

Objetos y memoria dinámica
Vectores dinámicos de objetos
También podemos declarar vectores dinámicos de objetos:
Punto *p;
p = new Punto[100];

El operador new
1. Crea espacio para los 100 puntos.
2. Llama al constructor por defecto para cada objeto (0 a 99).
delete [] p ;

El operador delete realiza lospasos inversos:
1. Llama al destructor para cada punto (99 a 0).
2. Libera la memoria.
5

Objetos y memoria dinámica
Uso de objetos dinámicos
Antes de usar el objeto, pasándole mensajes a través del puntero que lo
apunta, se ha de crear el objeto con new.
Cuando ya no se necesita el objeto, se destruye con delete.
int main()
{
Punto *p;
// CREAR ----p = new Punto();
// USAR ----p->visualizar();
//DESTRUIR ----delete p;
}

6

// creado el objeto dinámico
// uso del objeto mediante envío de mensajes
// liberar memoria del objeto

Objetos y memoria dinámica
Atributos dinámicos
Tendremos atributos dinámicos, cuando en una clase se declara un
atributo en forma de puntero.
Se trata de otra forma de guardar en memoria los atributos.
class Punto
{
private:
int x ;
int y ;
public:
...
};

classPunto
{
private:
int * x ;
int * y ;
public:
...
};

p1
x
0
y
0

Punto p1;

p2
x
y

Punto p2;

Ambas definiciones son equivalentes, pero con implementación distinta
7

Objetos y memoria dinámica
Creación de objetos con atributos dinámicos
Cuando se crea un objeto con atributos dinámicos, se crean al mismo
tiempo esos atributos.
¿Dónde?
Punto :: Punto(int a, int b)
En el constructor.
{
class Punto
{private:
int * x ;
int * y ;
public:
Punto (int a=0, int b=0);
...
};

Punto p2;

8

x = a;
y = b;
}

p2
x
?0
y
?0

Punto :: Punto(int a, int b)
{
x = new int;
y = new int;
*x = a;
*y = b;
}

Objetos y memoria dinámica
Creación de objetos con atributos dinámicos
Para cada objeto de la clase Punto que se crea, se crean a su vez sus
atributos dinámicos.
class Punto
{
private:
int * x ;
int * y ;public:
Punto (int a=0, int b=0);
...
};
Punto :: Punto(int a, int b)
{
x = new int;
y = new int;
*x = a;
*y = b;
}

int main()
{
Punto p1(7,3);
Punto p2();
…..
}

p1

p2
x

x
?7

y

?0
y

?3

?0

9

Objetos y memoria dinámica
Creación de objetos con atributos dinámicos
¿Cuál es el efecto de la siguiente declaración?
p1
class Punto
{
private:
int * x ;
int * y ;
public:
Punto (int a=0, int b=0);...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Memoria Dinamica
  • Memoria dinamica
  • Memoria dinamica
  • Memoria Dinamica
  • Memoria Dinamica
  • objetivos memorias
  • Memoria Dinamica En C
  • Manejo de memoria dinámica

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS