Порядок вызова конструкторов при наследовании? Здравствуйте. Мне не совсем понятно, в каком ПОРЯДКЕ происходят вызовы конструкторов при наследовании? Пример:#include using namespace std; class Parent { public: int m_Id; Parent(int Id = 0) : m_Id(Id) { cout << "Parent\n"; } int GetId() const { return m_Id; } }; class Child : public Parent { public: double m_Value; Child(double Value = 0.0) : m_Value(Value) { cout << "Child\n"; } double GetValue() const { return m_Value; } }; int main() { Parent p; Child c; return 0; } Я понимаю, что при создании Child c сначала создается часть Parent, а потом часть Child. Но в каком порядке? Сначала вызывается конструктор Child, потом конструктор Parent, а потом уже продолжается выполнение конструктора Child? Или при создании Child c СРАЗУ вызывается Parent(), а уже после вызывается Child()? Надеюсь, понятно выразился) Всем спасибо.
При наследовании сначала вызывается конструктор базового класса (в данном случае Parent), а потом конструктор производного класса (в данном случае Child). То есть, при создании объекта Child c, сначала вызывается конструктор Parent, а затем конструктор Child.
В вашем примере вывод будет следующим: Parent Child
При наследовании сначала вызывается конструктор базового класса (в данном случае Parent), а потом конструктор производного класса (в данном случае Child). То есть, при создании объекта Child c, сначала вызывается конструктор Parent, а затем конструктор Child.
В вашем примере вывод будет следующим:
Parent
Child
Надеюсь, это помогло разобраться!