Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SARGE553413 en 16 Agosto 2014, 13:58 pm



Título: [SOLUCIONADO] Duda con destructores en C++ (que borrar y que no)
Publicado por: SARGE553413 en 16 Agosto 2014, 13:58 pm
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.
Código:
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?

 


Título: Re: Duda con destructores en C++
Publicado por: ivancea96 en 16 Agosto 2014, 14:13 pm
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]".


Título: Re: Duda con destructores en C++
Publicado por: SARGE553413 en 16 Agosto 2014, 16:57 pm
Ok, gracias por la respuesta.

Saludos.