He tenido un problema que me está volviendo loco.He oído que los objetos creados con new deben ser eliminados con delete.
Tengo una clase llamada Bot de la cual creo un objeto. En main llamo a un método de este objeto que se encarga de escribir un saludo en pantalla. Después lo elimino y para asegurarme de que ha sido eliminado vuelvo a llamar al método Saluda. Lo que no entiendo es: ¿ por qué se puede ejecutar el método Saluda si se supone que el objeto ya no existe?
Código.
Código:
#include <iostream> using namespace std; class Bot { public: void Saluda(); }; void Bot :: Saluda() { cout<<"HOLA. "<<endl; } int main() { Bot * bot; bot=new Bot(); bot->Saluda(); // llamamos metodo Saluda delete bot; // eliminamos el objeto bot->Saluda(); // llamada a Saluda de un objeto supuestamente eliminado // se supone que debería salir error por tratar llamar a un metodo // de un objeto que ya no existe. }
La salida es:
Código:
):, se supone que solo debe escribir HOLA una vez y sacar error en la segunda por tratar llamar un metodo de un objeto que supuestamente ya eliminé.HOLA. HOLA.
¿Qué sucede? , ¿ Cómo puedo solucionarlo?.
Saludos.