Junior — Middle
114
Quel est le rôle du mot-clé 'virtual' lors de la déclaration d'un destructeur en C++?
Entreprises à qui on a demandé
Réponse de l'IA
sobes.tech IA
Ключевое слово virtual при объявлении деструктора в C++ гарантирует, что при удалении объекта через указатель на базовый класс будет вызван деструктор именно производного класса. Это важно для корректного освобождения ресурсов и предотвращения утечек памяти.
Если деструктор базового класса не виртуальный, а объект удаляется через указатель на базовый класс, вызовется только деструктор базового класса, а деструктор производного класса — нет.
Пример:
class Base {
public:
virtual ~Base() { std::cout << "Base destructor\n"; }
};
class Derived : public Base {
public:
~Derived() { std::cout << "Derived destructor\n"; }
};
int main() {
Base* obj = new Derived();
delete obj; // Вызовет сначала Derived::~Derived(), затем Base::~Base()
}