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.