Destructor (informatica)

informatica

Een destructor is in sommige objectgeoriënteerde programmeertalen een soort methode van een klasse die wordt aangeroepen net voordat een instantie van die klasse uit het geheugen verwijderd wordt. Niet alle objectgeoriënteerde programmeertalen kennen een destructor: C++ heeft bijvoorbeeld wel destructors, maar Java weer niet. Deze methode, deze opdracht is ervoor ontwikkeld om de door een computerprogramma gebruikte ruimte in het werkgeheugen weer vrij te kunnen geven.

De tegenhanger van een destructor is een constructor die uitgevoerd wordt wanneer het object wordt aangemaakt.

Voorbeeld bewerken

In C++ ziet een destructor er zo uit:

#include <iostream>
using namespace std;

class Shape {
    public:
      Shape() {
        cout << "Shape" << endl;
      }
      
      virtual ~Shape() {
        cout << "~Shape" << endl;
      }
};

class Circle: public Shape {
    public:
      Circle() {
        cout << "Circle" << endl;
      }
      
      virtual ~Circle() {
        cout << "~Circle" << endl;
      }
};

int main(int argc, char** argv) {
    Shape* shape = new Circle();
    cout << "Shape gemaakt" << endl;
    delete shape;
    cout << "Shape verwijderd" << endl;
}

De uitvoer van dit programma is dan ook:

Shape
Circle
Shape gemaakt
~Circle
~Shape
Shape verwijderd

De 'methodes' met de tilde ~ ervoor zijn in C++ destructors. Omdat ze virtual zijn, wordt de destructor van Shape aangeroepen nadat die van Circle is aangeroepen.