Назад к вопросам
Junior — Middle
84
Какая последовательность вызова методов разрушения объектов происходит при уничтожении объекта в языке программирования?
Ответ от нейросети
sobes.tech AI
В 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 destructor
// Base destructor
}
Таким образом, сначала вызывается деструктор Derived, затем Base.