TGViewer
C/C++ | Вопросы собесов C/C++ | Вопросы собесов @easy_c_plus · 4.19K subscribers
Post #2365 624
🤔 В каком порядке конструируется объект и в каком разрушается?

При создании и удалении объекта в 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()


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_c_plus
  1. Oct 11, 2026🤔 Расскажи о истории умных указателей История умных указателей (smart pointers) в C++ свя…
  2. Oct 10, 2026🤔 Зачем нужен виртуальный деструктор? Виртуальный деструктор необходим, когда класс предп…
  3. Oct 10, 2026🤔 Что знаешь про гарантии безопасности исключений? Гарантии безопасности исключений (Exce…
  4. Oct 9, 2026🤔 Строгая гарантия безопасности Гарантии безопасности исключений в C++ делятся на три уро…
  5. Oct 8, 2026🤔 Выбрасывание исключения из конструктора — это нормально? Да, выбрасывание исключения из…
  6. Oct 8, 2026🤔 Какое преимущество у list перед vector? List обеспечивает быстрые вставки и удаления за…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →