Я просто задавался вопросом, каково различие между .cpp и.h файлами? Для чего я использовал бы заголовочный файл (.h) и для чего я буду использовать cpp файл?
В общем, и это действительно может быть гораздо менее общим:
.h (заголовочные) файлы предназначены для декларирования вещей, которые используются много раз, и являются #include
d в других файлах
.cpp (имплементационные) файлы предназначены для всего остального, и почти никогда #include
d
По условию, .h-файлы - это то, что вы #включаете. CPP файлы - это то, что вы добавляете в свой проект для компиляции в отдельный объектный файл, а затем передаете компоновщику
.Файл .h называется заголовочным файлом. Обычно вы помещаете туда свой интерфейс (то, что вы хотите сделать публичным). Файл cpp - это то место, где вы на самом деле реализуете свой интерфейс.
Во-первых, оба являются текстовыми файлами, содержащими код для С++ компилятора или препроцессора. В системе нет никакой разницы.
Для обозначения содержимого файлов по условию используются различные расширения имен файлов. В программах на Си вы, как правило, видите .h и .c файлы, в то время как в C++ .hpp и .cpp служат одним и тем же целям.
Первая группа, .h и .hpp файлы, называемые заголовочными файлами, содержат в основном неисполняемый код, например, определения констант и прототипы функций. Они добавляются в программы с помощью директивы #include
и используются не только данной программой или библиотекой, но и другими программами или библиотеками, которые будут использовать их, объявляя точки интерфейса и договоры, определяющие значения. Они также используются для задания метаданных, которые могут изменяться при компиляции для разных операционных систем.
Вторая группа, .c и .cpp файлы, содержит исполняемые части кода библиотеки или программы.
.Поправьте меня, если я ошибаюсь, но,
Когда вы #include что-то, это более-менее вставляет весь включенный файл в файл с командой include; то есть, когда я включаю, говорю "macros.h" в "genericTools.cpp", все содержимое "macros.h" в этот момент помещается в "genericTools.cpp". Вот почему вам нужно использовать такие вещи, как "#pragma once" или другие защиты, чтобы предотвратить включение одного и того же файла дважды.
Обратите внимание, шаблонный код должен быть полностью в файле, который вы будете включать в другое место. (Я не уверен в этом - можно ли исключить специализацию шаблонов из включенных файлов и связать ее как обычную функцию?)
.Технически никакой разницы нет. C++ позволяет помещать свой код в любой файл, в любом формате, и это должно работать.
По условию, вы помещаете свои объявления (в основном, те, которые составляют ваш API) в .h-файлы, и называете их "заголовками". Файлы .cpp предназначены для реальных "кишок" вашего кода - подробностей реализации.
Обычно, заголовочные файлы включены в #include
другими файлами вашего проекта (и других проектов, если вы создаёте библиотеку), так что компилятор может получить интерфейс, необходимый для компиляции. Реализация, в .cpp файлах, как правило, реализована так, что есть один .cpp файл, "заполняющий" реализацию на каждый .h файл.