Los operadores new y delete ofrecen la posibilidad de reservar y liberar de forma dinámica la porción de memoria que ocupa un objeto, de un modo similar a la de las funciones malloc y free. La ventaja principal estriba en que new y delete forman parte del lenguaje C++, no son funciones de una librería. Hay dos tipos de operadores new y delete, según traten o no con arrays. En el segundo caso, operator new( admite opcionalmente una inicialización. La sentencia:



int* int_ptr= new int(3);

reserva memoria para un entero, y lo inicializa con el número 3. El operador new devuelve la dirección del bloque de la memoria donde está guardado el valor de la variable. Para conocer el valor de la variable a la que apunta int_ptr, basta escribir:

cout << *int_Ptr;

Algo que podemos expresar mediante la siguiente regla general:

contenido = *direccion;

Para liberar la memoria anteriormente reservada se llama a operator delete().

delete int_ptr;

Los pasos para declarar y usar punteros a objetos son idénticos a los empleados con otras variables:

Punto* ptro_pt;
ptro_pt=new Punto('*', 20, 10); //primer constructor
ptro_pt=new Punto(20, 10);      //segundo constructor
ptro_pt=new Punto();            //constructor por defecto
ptro_pt->mostrar ();
puntero_a_objeto->miembro_público;
delete ptro_pt;   //llama al destructor

Siguiente tema: Clases y Objetos - Arrays