Зачем в абстрактном базовом классе создавать конструктор? Здравствуйте!
В литературе что я читаю автор в АБК создает конструктор:class ABC{
public:
ABC(tralala &, trololo);
....
};
Производный класс:class Test : public ABC{
public:
Test(trololo, tututu &):ABC(tututu &, trololo);
};
Вопрос: зачем создавать явный конструктор для АБК, если его объект создать нельзя (при наличии чистой виртуальной функции конечно) и вопрос второй: что за странный вызов конструктора АБК в конструкторе производного класса? Спасибо

21 Авг 2019 в 07:00
211 +1
0
Ответы
1

Здравствуйте!

Создание конструктора в абстрактном базовом классе (АБК) имеет несколько целей:

Инициализация данных: конструктор может инициализировать данные, которые используются как в самом абстрактном классе, так и в его производных классах.

Инициализация членов класса: конструктор может также инициализировать члены класса, которые необходимо установить при создании объекта класса.

Упрощение кода: создание конструктора в базовом классе может упростить код в производных классах, поскольку необходимо будет вызвать конструктор базового класса в конструкторе производного класса.

Относительно странного вызова конструктора базового класса в конструкторе производного класса следует учитывать, что конструкторы производных классов должны вызывать конструкторы своего базового класса, чтобы правильно инициализировать его члены. В данном случае вызов конструктора базового класса в конструкторе производного класса Test выглядит корректным и обычным способом инициализации базового класса.

Надеюсь, это поможет вам понять цель создания конструктора в абстрактном базовом классе и вызов конструктора базового класса в конструкторе производного класса. Если у вас есть еще вопросы, не стесняйтесь задавать. Спасибо!

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