gratiszona

PUNTEROS A CLASES EN C

Punteros a clases.
Como cualquier otro tipo de dato, podemos tener punteros a clases, punteros a punteros a clases, punteros a punteros a punteros a clases, etc. Veamos un ejemplo:
# include <iostream.h>
# include 'Caja.h'
main() {
Caja grande (20, 10, 30);
Caja *punteroACaja1;
Caja *punteorACaja2;
punteroACaja1 = new Caja;
punteroACaja2 = new Caja(1, 2, 3);
cout << 'El volumen de la caja grande es ' << grande.volumen() << '\n';
cout << 'El nuevo volumen dos es ' << punteroACaja2 -> volumen() << '\n';
punteroACaja1 -> set (2, 4, 6);
cout << 'El nuevo volumen 1 es ' << punteroACaja1 -> volumen() << '\n';
delete punteroACaja1, punteroACaja2;
}
La salida de este programa sera:
El volumen de la caja grande es 6000
El nuevo volumen 2 es 6
El nuevo volumen 1 es 48
En este ejemplo hemos declarado dos punteros, punteroACaja1 y punteroACaja2, a objetos del tipo Caja. Hemos reservado memoria para la clase utilizando new y al final de la funcion la hemos liberado utilizando delete.
Cuando declaramos punteroACaja1 y punteroACaja2 no se llama al constructor de Caja. Esto se hace cuando reservamos memoria para un objeto de ese tipo.
El acceso a los componentes del objeto se hace a traves del operador ->
Las siguientes sentencias son equivalentes:
punteroACaja1 -> volumen()
(*punteroACaja1).volumen()
pero la notacion -> es la que se suele utilizar.
Si la clase tuviese un destructor, este seria llamado automaticamente cuando liberamos la memoria reservada dinamicamente para punteroACaja1 y punteroACaja2.

Anterior: clases puntero interno
Siguiente: objetos encadenados

Tal vez te interese sobre lenguaje c: