Programowanie w języku C/C++

Destruktory

  • 2009-03-20 16:02
  • 6 komentarzy
  • 9157 odsłon
  • Oceń ten tekst jako pierwszy
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

manfredek 2009-03-20 15:48

<quote=Mammoth>a jaki kompilator jest zgodny z ISO ??</quote>Comeau na przykład.

<quote=Mammoth>Wywołanie destruktora nie powoduje zniszczenia obiektu. Możemy użyć destruktora do "restartowania" obiektów.</quote>Bzdura...
<quote=standard, 12.4.14>Once a destructor is invoked for an object, the object no longer exists</quote>

Mammoth 2009-03-19 18:59

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

MarcelS 2007-05-05 11:37

Dev jest zgodny? Śmiech na sali.

Coldpeer 2007-02-28 20:26

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

virus1441 2006-05-13 11:37

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.

grzesko 2006-05-12 09:02

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 ;-)