Junior — Middle
128
Welche Rolle spielt das Schlüsselwort 'virtual' bei der Deklaration eines Destruktors in der Programmiersprache C++?
Unternehmen wurden gefragt
Antwort von AI
sobes.tech KI
Ключевое слово 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()
}