next up previous contents
Elõre: Mezõhozzáférés Fel: Konstruktorok és destruktorok Vissza: Konstruktorok definiálása

Destruktorok definiálása

Ahogy konstruktorokat definiálhatunk, ugyanúgy definálhatunk saját magunk destruktorokat is.

A statikus objektumok számára a C++ futtató rendszer a main meghívása elõtt foglal tárterületet és a main befejezése után felszabadítja azt. Az auto objektumok esetében a tárterületfelszabadítás akkor történik meg, amikor az adott változó érvényét veszti (tehát az objektum definiciót tartalmazó blokk végén). Az általunk definiált destruktorokat akkor aktivizálja a C++ futtató rendszer, amikor egy objektumot meg kell szüntetni. A destruktor definíció hasonlít a konstruktor definícióra. Ha  a  point  típusú objektumoknak point::point a konstruktora, akkor point::~ point lesz a destruktoruk. A formai különbséget csak a ~ (tilde) karakter jelenti (ami a komplementálás operátora).

            class point
                  {
                    int       x;
                    int       y;
                    colortype color;
                    int       get_x(void) { return x; }
                    int       get_y(void) { return y; }             
                    colortype get_color(void);              
                    void      show(void);
                    void      hide(void);
                    point(int newx, int newy); // konstrktor 
                    ~point(void);              // destruktor
                  };
A fenti példa elsõ ránézésre felesleges, hiszen elég lenne a C++ futtató rendszer alapértelmezés szerinti destruktorára hagyatkozni. Igen ám, de egy megszûnésre ítélt pontot a képernyõrõl is el kell tüntetni. Ez azt jelenti tehát, hogy egy olyan destruktor függvényt kell definiálnunk a point típus számára, amelyik szükség esetén (például ha a hatterszin == get_color() igaz) a hide függvény meghívásával az adott pontot le is törli a képernyõrõl.