Когда я должен использовать заголовочный файл? - PullRequest
2 голосов
/ 27 февраля 2012

После обучения нескольких студентов в местном колледже меня спросили, «когда лучше использовать заголовочный файл на C ++ по сравнению с обычным .cpp файлом?». Я как бы боролся с ответом и смотрел, есть ли более определенный ответ о том, что лучше при каких сценариях.

Лучше ли использовать файл заголовка при использовании кода, который можно использовать в нескольких проектах? Я знаю, что это глупый пример, но если вы сделали пользовательские математические функции, которые можно использовать снова и снова в других проектах; что было бы лучше всего поместить в заголовочный файл правильно?

Ответы [ 5 ]

10 голосов
/ 27 февраля 2012

Все, что требуется для доступа из более чем одного .cpp файла, должно быть объявлено в заголовочном файле, а файл заголовка должен быть #included в каждом соответствующем .cpp файле.

Это может, например, включать объявление глобальных переменных, глобальных функций, классов и т. Д.

1 голос
/ 27 февраля 2012

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

1 голос
/ 27 февраля 2012
Файлы заголовков

позволяют лучше повторно использовать разработанный код (т. Е. Функции или классы).На самом деле это стандартная практика - всегда определять файлы .h и cpp для каждого класса, который вы определяете.Ответ на ваш второй вопрос - да, если вы хотите повторно использовать пользовательские функции в своих проектах, вы можете определить его сигнатуру в файле .h и его фактическую реализацию в файле .cpp или в уже скомпилированном dll / lib

0 голосов
/ 27 февраля 2012

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

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

Как правило, рекомендуется использовать файлы заголовков для каждого класса, а иногда и для группы связанных классов.

0 голосов
/ 27 февраля 2012

Заголовок определяет интерфейс;исходный файл обеспечивает реализацию.За исключением тривиально простых тестовых программ, вы обычно начинаете с заголовка и пишете реализацию только после того, как заголовок готов.На практике вы можете вернуться и изменить заголовок;например, чтобы добавить частных членов в класс.Но цель состоит в том, чтобы правильно определить, что вам нужно реализовать, прежде чем пытаться реализовать это, и это роль заголовка.

Другой частой политикой является размещение низкоуровневой документации также в заголовке.В таких случаях при написании заголовка вы начнете писать описание того, что будет делать класс, в частности его роль и обязанности, прежде чем писать какой-либо действительный код C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...