Задать вопрос
@Sazoks

Порядок вызова конструкторов при наследовании?

Здравствуйте.
Мне не совсем понятно, в каком ПОРЯДКЕ происходят вызовы конструкторов при наследовании?
Пример:

#include <iostream>
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()?
Надеюсь, понятно выразился)
Всем спасибо.
  • Вопрос задан
  • 161 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Вызов конструктора Parent считается частью вызова конструктора Child. И он происходит раньше, чем конструирование всех полей, добавленных в Child — и уж тем более до тела Child::Child.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы