struct A1
{
~A1() {} // A1 is not trivially destructible
};
struct A2
{
~A2() = default; // A2 is trivially destructible
};
A2
лучше, чем A1
, потому что A2
легко разрушить, а A1
— нет.
Я думаю, может быть, мы можем с уверенностью сказать:
1. Пользовательский пустой деструктор никогда не должен использоваться.
2. Любой определяемый пользователем пустой деструктор следует заменить деструктором по умолчанию.
Я прав?
virtual ~Base() {}
, который может бытьvirtual ~Base() = default;
. Но иногда вам нужно добавитьBase::~Base() = default;
в реализующий файл Base.cpp, чтобы компилятор мог сгенерировать виртуальную таблицу. - person Eljay   schedule 18.04.2021