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.