Есть ли какие-либо конкретные причины для использования невиртуальных деструкторов?

Как я знаю, любой класс, предназначенный для создания подклассов, должен быть объявлен с виртуальным деструктором, чтобы экземпляры класса могли быть уничтожены должным образом при доступе к ним через указатели.

Но почему вообще возможно объявить такой класс с невиртуальным деструктором? Я полагаю, что компилятор может решить, когда использовать виртуальные деструкторы. Так что, это недосмотр разработчиков C++, или я чего-то не понимаю?

20
задан j0k 1 July 2013 в 14:11
поделиться