Предупреждение C26443
Переопределяющий деструктор не должен использовать явные описатели override или virtual.
Это предупреждение было удалено в Visual Studio 16.8, чтобы отразить изменения в C.128 в основных рекомендациях по C++.
C++ Core Guidelines
C.128. Виртуальные функции должны указывать именно одну из виртуальных, переопределения или финала.
Текущий консенсус по основным рекомендациям заключается в исключении деструкторов из рекомендации "переопределения явно".
Примечания.
- Флаги правил переопределяют деструкторы, которые явно используют описатели virtual или override.
- Деструкторы по-прежнему могут использовать описатель final из-за его специальной семантики.
- Предупреждения отображаются в определениях функций, а не объявлениях. Это может быть запутано, так как определения не имеют виртуальных описателей, но предупреждение по-прежнему подходит.
Имя анализа кода: NO_EXPLICIT_DTOR_OVERRIDE
Пример: явное "переопределение"
class Transaction {
public:
virtual ~Transaction();
// ...
};
class DistributedTransaction : public Transaction {
public:
~DistributedTransaction() override { // C26443
// ...
}
};