В классе (без членов прямого указателя), я вижу, есть следующие 3 возможности для определения деструктора.
class Child : public Parent
{
public:
// ~Child() override {} // (1) explicit destructor with empty body
// ~Child() override = default; // (2) explicit default destructor
// // (3) implicit default destructor
private:
// members
}
Можно ли / нужно всегда избегать опции (1)
? Потому что Clang-Tidy намекает мне выбрать опцию (2)
, если я использую опцию (1)
.
Каковы различия между тремя различными опциями в целом? Что следует учитывать при выборе одного из других?