Destruktory

virus1441

Destruktor to metoda klasy wywoływana podczas niszczenia obiektu danej klasy. Służy on przede wszystkim do zwalniania pamięci zarezerwowanej dla pól dynamicznych tej klasy. Destruktor, podobnie jak i konstruktor, nie ma typu, a jego nazwa jest identyczna jak nazwa danej klasy poprzedzona tyldą (~).

Przykład

class Punkt
{
  public:
    int *x, *y;
    Punkt(); // kontruktor w którym są tworzone pola x i y
    ~Punkt(); //Destruktor
};
// ...
Punkt::~Punkt()
{
  delete x;
  delete y;
}

W tym przykładzie celowo ominąłem definicję konstruktora, gdyż nie jest ona istotna.

Zobacz też:

6 komentarzy

Mammoth napisał(a)

a jaki kompilator jest zgodny z ISO ??
Comeau na przykład.

Mammoth napisał(a)

Wywołanie destruktora nie powoduje zniszczenia obiektu. Możemy użyć destruktora do "restartowania" obiektów.
Bzdura...

standard, 12.4.14 napisał(a)

Once a destructor is invoked for an object, the object no longer exists

a jaki kompilator jest zgodny z ISO ?? Co kompilator to inne obyczaje (przynajmniej niektóre deklarują, że mają swój standard).

Dev jest zgodny? Śmiech na sali.

virus1441: trochę spóźniony, ale... Dev-C++ używa g++ (MinGW) ;)

Bo dev jest zgodny z ISO C++ :) Mój kompilator nie BYŁ (przeżuciłem się na Linuxa, a g++ jest zgodny z ISO). Poprawiłem.

Wszędzie czytałem, że destruktor nie przyjmuje argumentów (i nic nie zwraca) a tu taka definicja. Dev-c++ też się z tym nie zgadza, bo go zapytałem ;-)