597просмотров
13.9%от подписчиков
23 марта 2026 г.
questionScore: 657
🤔 В каком порядке конструируется объект и в каком разрушается? При создании и удалении объекта в C++ выполняется несколько этапов: Конструирование: от базового класса к производному. Деструкторы вызываются в обратном порядке: от производного к базовому. 🚩Порядок вызова конструкторов При создании объекта сначала создаются его базовые классы, затем члены класса, потом сам объект. #include <iostream> class Base {
public: Base() { std::cout << "Конструктор Base\n"; } ~Base() { std::cout << "Деструктор Base\n"; }
}; class Derived : public Base {
public: Derived() { std::cout << "Конструктор Derived\n"; } ~Derived() { std::cout << "Деструктор Derived\n"; }
}; int main() { Derived obj;
} Вывод
Конструктор Base
Конструктор Derived
Деструктор Derived
Деструктор Base 🚩Порядок вызова конструкторов для членов класса Члены класса инициализируются в порядке их объявления в классе (а не в порядке в списке инициализации). class A {
public: A() { std::cout << "A()\n"; } ~A() { std::cout << "~A()\n"; }
}; class B {
public: B() { std::cout << "B()\n"; } ~B() { std::cout << "~B()\n"; }
}; class C { A a; B b;
public: C() { std::cout << "C()\n"; } ~C() { std::cout << "~C()\n"; }
}; int main() { C obj;
} Вывод
A()
B()
C()
~C()
~B()
~A() Ставь 👍 и забирай 📚 Базу знаний