No vacía el espacio asignado, debes de vaciarlo explícitamente con delete, antes de volver a llamar a new. No obstante, esa metodología a mi punto de vista parece incorrecta por dos razones:
- Es posible que el compilador optimice el uso de new después de delete y te quedes todo el rato con la misma posición de memoria
- En caso contrario, estás malgastando tiempo en liberar y reservar memoria y la aleatoriedad de los datos en realidad son datos que fueron usados por otras aplicaciones y procesos del sistema previamente.
Sería, en mi opinión, más correcto realizar lo siguiente:
- En el constructor por defecto asignar un valor aleatorio a la variable de instancia n. [I]Si no sabes hacerlo basta buscar en Google "numeros aleatorios c++" (o si lo prefieres y puedes la nueva forma de hacerlo de c++11)
- En vez de realizar delete llamar al constructor por defecto de nuevo de la siguiente manera:
Código C++:
Ver originalclass X
{
public:
int n;
X() {
// Implementación aleatorio
}
};
int main(int argc, char* args[])
{
X *p;
p = new X;
// Hacer algo
*p = X(); // Ahora se asignaría un nuevo valor aleatorio a la instancia p de la clase X
delete p; // Sólo es necesario un delete al final
return 0;
}