Стоит ли создавать header с include-ами?

136
10 марта 2021, 23:00

Если проект разбит на множество файлов, описывающих разных наследников некоторого абстрактного класса, то в файле, в котором нужно использовать всех этих наследников будет много include-ов в начале.

Стоит ли создать ещё один header, внутри которого будет просто список include-ов всех этих наследников и подключать уже его?

Или может стоит перенести всех наследников в тот же файл, где описан и абстрактный класс-родитель?

Или оставить как есть, с длинным списком include-ов в файле использующем всех наследников?

Answer 1

имхо, не стоит создавать ни отдельный хидер, ни, тем более, включать наследников к абстрактному классу. Если первое - это просто ещё один файл, который нужен всего лишь для того, чтобы в cpp сделать один инклюд вместо нескольких, то во втором сразу две проблемы: 1) абстрактный класс на то и абстрактный класс, что ему не нужно знать ни о каких наследниках, это, по сути, просто интерфейс; 2) это может существенно отразится на времени компиляции, ведь каждый инклюд добавляется в cpp целиком препроцессором вместе со всеми включенными в него инклюдами. Поэтому, имхо, хороший тон - это включение только необходимых хидеров в cpp файл, а в хидерах, по возможности, использовать предекларацию.

READ ALSO
Почему после использования cin функции cin.get() и cin.getline() не работают, а последующие вызовы cin срабатывают?

Почему после использования cin функции cin.get() и cin.getline() не работают, а последующие вызовы cin срабатывают?

Насколько я знаю cin оставляет символ '\n' в потоке из-за чего последующие вызовы cinget() и cin

125
onclick на теге <p>

onclick на теге <p>

Необходимо посадить событие с помощью атрибута onclick на тег <p>Объясните, пожалуйста, почему в данном случае функция не вызывается?

111