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

21 Авг 2019 в 06:58
232 +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 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир