Возможна ли перегрузка деструкторов?
Простой ответ Нет .
Две версии деструктора не могут сосуществовать в теле class
.
Однако, в отличие от распространенного мнения, обратите внимание, что деструктор имеет синтаксис 2.
struct E {
~E(); // syntax-1
~E() throw(); // syntax-2
};
Синтаксис-2 менее популярен.Но это обязательно, если деструктор базового класса содержит похожий синтаксис.Лучший пример - наследование std::exception
.
Обратите внимание, что несоблюдение такого синтаксиса приводит к:
ошибка: более слабый спецификатор броска для «виртуального E:: ~ E () '