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