Junior — Middle
107
Класта деструкторды виртуалды деп жариялауға бола ма?
Сұралған компаниялар
Astra
AI-дан жауап
sobes.tech AI
Да, в C++ деструктор можно объявить виртуальным. Это важно, когда у вас есть базовый класс с виртуальными функциями и производные классы, и вы хотите обеспечить корректный вызов деструкторов при удалении объекта через указатель на базовый класс. Если деструктор не виртуальный, то при удалении через указатель на базовый класс вызовется только деструктор базового класса, что может привести к утечкам ресурсов.
Пример:
class Base {
public:
virtual ~Base() { std::cout << "Base destructor\n"; }
};
class Derived : public Base {
public:
~Derived() override { std::cout << "Derived destructor\n"; }
};
int main() {
Base* obj = new Derived();
delete obj; // Вызовет сначала Derived::~Derived(), затем Base::~Base()
}