319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890
|
|||||||||||
1 | |||||||||||
Библиотеки30.07.2021, 01:08. Показов 928. Ответов 6
Метки нет (Все метки)
Часто замечаю, что в .h файлах не используют include. Почему так?
0
|
30.07.2021, 01:08 | |
Ответы с готовыми решениями:
6
про библиотеки в VS C++ (какие библиотеки нужны для функций 'cout' и 'cin') Как включить библиотеки в исполняемый файл, чтобы не приходилось ставить библиотеки (Eclipse) Вызов функции одной динамической библиотеки из другой динамической библиотеки Библиотеки?? |
484 / 296 / 53
Регистрация: 13.08.2019
Сообщений: 1,042
|
|
30.07.2021, 05:46 | 2 |
1. Потому что .h -файл - это и есть подключаемый заголовочный файл
2. В .h файле подключают другие заголовочные файлы, если требуется использовать другие классы при описании текущего класса. А если не требуется, то не подключают Например, Вы описываете собственный класс, который работает с графиками с помощью некоторой библиотеки. Требуется создать поля или параметры методов с типами данных, которые поддерживает только эта библиотека. Что делать? Верно: подключаем заголовочный файл этой библиотеки. Так же Вам могут встречаться классы с пустым .срр-файлом, а вся реализация будет содержаться в .h-файле. Обычно так делают для небольших классов или классов, реализующих паттерн "Одиночка".
1
|
фрилансер
5521 / 5112 / 1052
Регистрация: 11.10.2019
Сообщений: 13,411
|
|
30.07.2021, 07:22 | 3 |
1
|
18953 / 9900 / 2421
Регистрация: 30.01.2014
Сообщений: 17,385
|
|
30.07.2021, 08:39 | 4 |
Чтобы сократить время перекомпиляции.
Чем меньше цепочки включения заголовочных файлов в проекте, тем меньше вероятность, что при изменении одного заголовочного файла за ним последует перекомпиляция большай части проекта.
2
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
30.07.2021, 10:44 | 5 |
в твоём случае трюк с forward declaration не сработает.
а вообще, ты задаёшь странный вопрос. а нафига подключать, если можно не подключать? чем меньше всякого хлама ты подключаешь к хэдеру, тем лучше.
2
|
Модератор
2563 / 1099 / 375
Регистрация: 11.08.2017
Сообщений: 3,365
|
|
30.07.2021, 11:05 | 6 |
В данном случае работать не будет, так как forward declaration работает только с указателями и ссылками, а тут ни того ни другого.
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
30.07.2021, 11:55 | 7 | |||||
с типами-значениями он тоже работает.
forward declaration можно использовать в контексте объявлений. проблемы начинаются только в том случае, если в момент, когда понадобилось определение типа, он попрежнему оказывается неполным. например, в таком сценарии ошибок не возникает: https://rextester.com/BBCBL58569
0
|
30.07.2021, 11:55 | |
30.07.2021, 11:55 | |
Помогаю со студенческими работами здесь
7
Библиотеки Библиотеки С++ Библиотеки Библиотеки Си библиотеки в си++ Библиотеки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |