Порядок вызова конструкторов при наследовании? Здравствуйте.
Мне не совсем понятно, в каком ПОРЯДКЕ происходят вызовы конструкторов при наследовании?
Пример:#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()?
Надеюсь, понятно выразился)
Всем спасибо.

4 Ноя 2019 в 19:48
169 +1
0
Ответы
1

При наследовании сначала вызывается конструктор базового класса (в данном случае Parent), а потом конструктор производного класса (в данном случае Child). То есть, при создании объекта Child c, сначала вызывается конструктор Parent, а затем конструктор Child.

В вашем примере вывод будет следующим:
Parent
Child

Надеюсь, это помогло разобраться!

19 Апр в 02:59
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир