Нужен ли интерфейсам виртуальный деструктор, или сгенерированный автоматически? Например, какой из следующих двух фрагментов кода является лучшим и почему? Обратите внимание, что это ВЕСЬ класс. Других методов, переменных и т. Д. В языке 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:
Мое второе редактирование просто неверно и дезинформация. Пожалуйста, прочитайте комментарии реальных умных людей для получения дополнительной информации.