A заголовочный файл - это , обычно , используемый для определения интерфейса или набора интерфейсов в приложении. Подумайте о файле заголовка как о чем-то, что показывает внешнюю функциональность программы, но не содержит технических деталей реализации.
Например, если вы оптимизировали программу, вы, скорее всего, изменили бы исходный файл (.cpp) для улучшения алгоритма, но файл заголовка не изменился бы, потому что внешние клиенты по-прежнему вызывают методы, используя тот же набор параметров и возвращаемых значений.
В объектно-ориентированном языке, таком как C ++, файл заголовка обычно включает следующее:
- Описание класса и иерархия наследования
- Элементы данных класса и типы
- Методы класса
Несмотря на то, что ничто не мешает реализации кода в заголовочном файле, это, как правило, не приветствуется, поскольку может привести к дополнительным связям и зависимостям в коде.
В некоторых случаях (например, шаблонные классы) реализация должна быть определена в заголовочном файле по техническим причинам.
A library - это набор кода, который вы хотите сделать доступным для программы или группы программ. Он включает реализацию определенного интерфейса или набора интерфейсов.
Код определен в библиотеке, чтобы предотвратить дублирование кода и способствовать его повторному использованию. Библиотека может быть статически связанной (.lib) или динамически связанной (.dll):
A статически связанная библиотека определяет набор экспортных символов (которые можно рассматривать как определения методов), которые затем связываются с конечным исполняемым файлом (.exe) на этапе компоновки процесс сборки. Преимущество заключается в более быстром времени выполнения (поскольку библиотека не нуждается в динамической загрузке) за счет большего двоичного кода (поскольку методы по существу реплицируются в исполняемом файле).
динамически связанная библиотека связывается во время выполнения программы, а не при связывании программы. Это полезно, когда нескольким программам необходимо повторно использовать одни и те же методы, и широко используется в таких технологиях, как COM.