Ver Mensaje Individual
  #9 (permalink)  
Antiguo 29/08/2012, 15:58
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Eliminar objeto con delete

Bueno,

He mirado un poco y lo que pasa es que el comportamiento al llamar a un método desde un puntero nulo es indeterminado. Esto quiere decir que, ependiendo de unas circunstancias, puede dar error y, dependendiendo de otras, no.

Lo aconsejable es no realizar ninguna llamada con ese puntero una vez utilizado el delete.

Te dejo un extracto traducido libremente de un texto que he encontrado y define muy bien lo que pasa:

Cita:
Se podría pensar que, al llamar a un método desde un puntero a un objeto, se desferenciaría el puntero (es decir, acceder al objeto) y causaría un error. En la práctica, si la función no es virtual, el compilador convierte esa llamada a una función normal en la que se pasa el puntero como el primer parámetro de esta.

Si el método no hace referencia a las atributos o algún método virtual, esta llamada, en realidad, podría tener éxito sin dar ningún tipo de error.
El éxito de la llamada entra dentro de lo que podemos llamar un comportamiento "indeterminado"
Un saludo