Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/08/2012, 15:25
Tortoiseius
 
Fecha de Ingreso: julio-2011
Ubicación: Querétaro México
Mensajes: 34
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Eliminar objeto con delete

Cita:
Iniciado por alexg88 Ver Mensaje
El código está bien y hay que utilizar delete, no delete[].

delete[] se utiliza cuando quieres declarar arrays dinámicos, no cuando quieres crear un único objeto, como es tu caso.

Ahora el problema que tenías:

Cuando utilizas delete estás liberando la memoria del objeto al que apuntas, pero el puntero sigue teniendo valor, es decir, tiene apuntada todavía la dirección de memoria y eso te permite realizar la llamada a Saludo, aunque es altamente probable que te dé errores si usas atributos del objeto en el método al que llamas, no así cuando lo único que haces es imprimir una cadena por pantalla.

Para que no puedas llamar al método tienes que poner a null el puntero.

Un saludo.
Código:
int main()
{
  
  Bot * bot;
  
  bot=new Bot();
   	
  bot->Saluda(); 	 // primera llamada
  
  delete bot;              // liberando objeto
  
  bot=NULL;             //poniendo puntero bot a NULL
  
  bot->Saluda();        // segunda llamada ( sigue siendo posible llamarlo )
  
  return 0;
}

pero sigue siendo posible llamarlo ):. ¿ Es a esto lo que te referías con poner bot a NULL? . Disculpa mi ignorancia ):.