, если вы имеете в виду C ++.
Деструктор всегда должен быть объявлен виртуальным.
Почему?
Потому что, когда объект «разрушен», он должен очистить ресурсы объекта, на который мы ссылаемся в коде.
См. Этот пример, чтобы понять:
Class A;
Class B: Public A { int *pVar };
A* x = new B();
delete x
;
В этом случае, если деструктор B не объявлен как виртуальный, деструктор, который будет вызываться, будет деструктором A, и поэтому pVar не будет освобожден.
Надеюсь, это ясно.
РЕДАКТИРОВАТЬ : Если это ответ на ваш вопрос, отметьте его как ответ или, по крайней мере, upvote.
РЕДАКТИРОВАТЬ2 : Эта вики ссылка очень хорошо ее описывает.