Destruktor w C++

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Destruktor to specjalna metoda klasy wywoływana automatycznie w momencie niszczenia obiektu. Służy głównie do zwalniania zasobów zajętych przez obiekt, np. pamięci dynamicznej, uchwytów do plików, połączeń sieciowych lub innych zasobów systemowych.

Składnia destruktora

Destruktor ma taką samą nazwę jak klasa, ale poprzedzoną znakiem ~:

class pracownik {
public:
    ~pracownik() {
        cout << "Obiekt został usunięty";
    }
};

Cechy destruktora:
- nie ma typu zwracanego, nawet void,
- nie przyjmuje argumentów,
- w klasie może istnieć tylko jeden destruktor,
- jest wywoływany automatycznie, gdy obiekt kończy swoje życie.

Kiedy destruktor jest wywoływany?

Destruktor uruchamia się m.in. gdy:
- obiekt lokalny wychodzi poza zakres,
- obiekt utworzony przez new zostaje usunięty przez delete,
- kończy się czas życia obiektu tymczasowego.

Przykład:

void funkcja() {
    pracownik p;
} // tutaj automatycznie wywoła się ~pracownik()

Znaczenie w pytaniach egzaminacyjnych

Jeżeli komunikat brzmi np. "Obiekt został usunięty", powinien zostać umieszczony w destruktorze, ponieważ to właśnie destruktor odpowiada za działania wykonywane przy usuwaniu obiektu. Konstruktor tworzy obiekt, metoda statyczna działa bez konkretnego obiektu, a operator== służy do porównywania obiektów.