[SOLUCIONADO] Duda con destructores en C++ (que borrar y que no)

Iniciado por SARGE553413, 16 Agosto 2014, 13:58 PM

0 Miembros y 1 Visitante están viendo este tema.

SARGE553413

Hola a todos.

Tengo una duda con destructores en C++, y es que en todos los tutoriales que he leído, en el destructor se borran solo aquellas variables miembro que son punteros, y no entiendo del todo por que no se borran todas las demás variables. ¿Es porque las variables no punteros no se reservan  mediante 'new' y por ello se borran automáticamente?

Ej.

class A{

private:
 int n;
 char *c;

public:
 A(){
      this->n=0;
      this->c=new char[20];
 }

 ~A(){
      delete[] this->c;
      this->c=NULL;
     //¿delete this->n? <== ¿Hay que hacer esto?
  }
}


Gracias, saludos.

PD. El operador 'delete' es para variables que se reservaron con el operador 'new', y 'delete[]' para las que se reservan mediante 'new[]', ¿esto es cierto SIEMPRE?


ivancea96

Es exactamente lo que dijiste xD
Las que no son punteros, se destruyen automáticamente. Los punteros, al ser memoria dinámica, es algo que tiene que tener en cuenta el programador.

delete es para arreglos de 1 elemento.
delete[], para arrehlos de más de 1 elemento.

Si no me equivoco, puedes usar "delete" cuando reservaste memoria mediante "new ...[1]".

SARGE553413

Ok, gracias por la respuesta.

Saludos.