Нужны ли интерфейсам виртуальный деструктор или автогенерация? Например, какой из следующих двух фрагментов кода лучше всего, и почему? Обратите внимание, что это класс WHOLE. Нет других методов, переменных и т.д. В Java-говорить это "интерфейс".
class Base
{
public:
virtual void foo() = 0;
virtual ~Base() {}
};
OR...
class Base
{
public:
virtual void foo() = 0;
~Base() {} // This line can be omitted, but included for clarity.
};
ИЗМЕНИТЬ, ЧТОБЫ "НЕ ЧТО Я ИЩУ ЗА" ОТВЕТЫ:
Каковы последствия каждого маршрута. Пожалуйста, не давайте смутные ответы, такие как "он не будет разрушен должным образом". Пожалуйста, скажите мне, что произойдет. Я немного ботаник сборки.
Изменить 2:
Мне хорошо известно, что "виртуальный" тег означает, что деструктор не будет вызван, если его удалить с помощью указателя на производный, но (я думаю) этот вопрос в конечном итоге сводится к "безопасно ли опустить этот деструктор, ибо действительно ли это тривиально?"
ИЗМЕНИТЬ 3:
Мое второе редактирование просто неверно и дезинформация. Пожалуйста, прочитайте комментарии реальных умных людей для получения дополнительной информации.