Ma to istotne znaczenie w przypadku wykorzystywania polimorfizmu.
W funkcji głównej main() zostaje zdefiniowany wskaźnik typu Osoba, któremu zostaje przypisany adres obiektu typu Pracownik zdefiniowanego dynamicznie. Poprzez wykorzystanie operatora delete, który usuwa z pamięci wcześniej utworzony obiekt typu Pracownik, zostaje wywołany niejawnie destruktor klasy Pracownik.
Wynikiem działania programu będzie wypisanie na ekranie: ~Pracownik(): uruchomiono ~Osoba(): uruchomiono
W przypadku pominięcia słowa virtual przed definicją destruktora w klasie Osoba, destruktor ~Pracownik() nie zostałby wywołany, ponieważ kompilator uznałby, że pokazuje na obiekt typu Osoba (nie zostałby sprawdzony typ obiektu, na który pokazuje wskaźnik, w trakcie działania programu).
Pominięcie wywołania destruktora klasy pochodnej może doprowadzić do poważnych błędów w działaniu programu np. do wycieku pamięci. Oczywiście w tym prostym przykładzie nie doprowadzi to do żadnych poważnych konsekwencji. W przypadku niekorzystania z polimorfizmu, nie ma to znaczenia.