2012-02-27 2 views
2

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

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

+1

Посмотрите на [это] (http://stackoverflow.com/questions/1945846/c-what-should-go-into-an-h-file) и [это] (http: // stackoverflow. com/questions/333889/in-c-why-have-header-files-and-cpp-files) и [this] (http://stackoverflow.com/questions/1167875/header-per-source-file) и ... ну, вы понимаете. – Bart

+0

и это: http: //stackoverflow.com/questions/280033/c-header-files-code-separation – Naveen

ответ

10

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

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

1

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

1

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

0

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

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

0

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

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

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

Смежные вопросы