Как работает родительский конструктор c++ в дочернем классе? У меня есть некий класс Figure, в котором есть композиция объектов Point. От Figure наследуется Hline и Vline. Предполагается, что оба используют композицию Point, но отрисовывают по разному. Решил перенести создание композиции в конструктор, но не знаю как родительский отработает в дочернем.
В общем: как родительский конструктор будет работать в дочернем классе? Нужно ли будет его вызывать вручную и если да то как?

21 Авг 2019 в 06:58
183 +1
0
Ответы
1

В C++ конструкторы дочерних классов автоматически вызывают конструкторы родительских классов. То есть, когда вы создаете объект дочернего класса, сначала вызывается конструктор родительского класса, а затем конструктор самого дочернего класса.

Для вашего случая, если вы хотите создать композицию объектов Point в конструкторе дочернего класса, вам не нужно вызывать конструктор родительского класса вручную. Просто инициализируйте композицию в конструкторе дочернего класса, как показано ниже:

class Figure {
public:
Point p1;
Point p2;
Figure() : p1(Point(0,0)), p2(Point(0,0)) {}
};
class Hline : public Figure {
public:
Hline() {
p1 = Point(0,0); // инициализация композиции в дочернем классе
p2 = Point(10,0);
}
};
class Vline : public Figure {
public:
Vline() {
p1 = Point(0,0); // инициализация композиции в дочернем классе
p2 = Point(0,10);
}
};
int main() {
Hline hline;
Vline vline;
return 0;
}

В приведенном коде, конструкторы дочерних классов Hline и Vline вызовут конструктор родительского класса Figure, который инициализирует композицию объектов Point. Вам необходимо только инициализировать композицию объектов Point в конструкторах дочерних классов, как показано.

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