29/08/2012, 15:25
|
| | Fecha de Ingreso: julio-2011 Ubicación: Querétaro México
Mensajes: 34
Antigüedad: 13 años, 4 meses Puntos: 0 | |
Respuesta: Eliminar objeto con delete Cita:
Iniciado por alexg88 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 ):. |