Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890
1

Библиотеки

30.07.2021, 01:08. Показов 928. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Часто замечаю, что в .h файлах не используют include. Почему так?

C++
1
2
3
4
5
6
7
// h файл 
class MyClass;
 
class OtherClass {
public:
MyClass clas;
};
C++
1
2
//cpp 
#include "myclass"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2021, 01:08
Ответы с готовыми решениями:

про библиотеки в VS C++ (какие библиотеки нужны для функций 'cout' и 'cin')
какие библиотеки нужны для функций 'cout' и 'cin' ???

Как включить библиотеки в исполняемый файл, чтобы не приходилось ставить библиотеки (Eclipse)
Как включить библиотеки в конечный EXE как это сделано в bilder, чтобы не приходилось ставить...

Вызов функции одной динамической библиотеки из другой динамической библиотеки
Добрый день! Помогите пожалуйста разобраться со следующим вопросом. Возможно ли из одной...

Библиотеки??
Это вообще библиотеками называется, или класс или еще как? Где можно найти описание iostream.h,...

6
484 / 296 / 53
Регистрация: 13.08.2019
Сообщений: 1,042
30.07.2021, 05:46 2
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
Часто замечаю, что в .h файлах не используют include. Почему так?
1. Потому что .h -файл - это и есть подключаемый заголовочный файл
2. В .h файле подключают другие заголовочные файлы, если требуется использовать другие классы при описании текущего класса. А если не требуется, то не подключают
Например, Вы описываете собственный класс, который работает с графиками с помощью некоторой библиотеки. Требуется создать поля или параметры методов с типами данных, которые поддерживает только эта библиотека. Что делать? Верно: подключаем заголовочный файл этой библиотеки.

Так же Вам могут встречаться классы с пустым .срр-файлом, а вся реализация будет содержаться в .h-файле. Обычно так делают для небольших классов или классов, реализующих паттерн "Одиночка".
1
фрилансер
5521 / 5112 / 1052
Регистрация: 11.10.2019
Сообщений: 13,411
30.07.2021, 07:22 3
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
MyClass clas;
заголовок с этим классом всё равно придётся добавить
1
18953 / 9900 / 2421
Регистрация: 30.01.2014
Сообщений: 17,385
30.07.2021, 08:39 4
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
Часто замечаю, что в .h файлах не используют include. Почему так?
Чтобы сократить время перекомпиляции.
Чем меньше цепочки включения заголовочных файлов в проекте, тем меньше вероятность, что при изменении одного заголовочного файла за ним последует перекомпиляция большай части проекта.
2
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.07.2021, 10:44 5
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
Часто замечаю, что в .h файлах не используют include. Почему так?
в твоём случае трюк с forward declaration не сработает.

а вообще, ты задаёшь странный вопрос.
а нафига подключать, если можно не подключать?

чем меньше всякого хлама ты подключаешь к хэдеру,
тем лучше.
2
Модератор
Эксперт Java
2563 / 1099 / 375
Регистрация: 11.08.2017
Сообщений: 3,365
30.07.2021, 11:05 6
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
C++
6
MyClass clas;
В данном случае работать не будет, так как forward declaration работает только с указателями и ссылками, а тут ни того ни другого.
1
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
30.07.2021, 11:55 7
Цитата Сообщение от alecss131 Посмотреть сообщение
так как forward declaration работает только с указателями и ссылками
с типами-значениями он тоже работает.

forward declaration можно использовать в контексте объявлений.
проблемы начинаются только в том случае,
если в момент, когда понадобилось определение типа,
он попрежнему оказывается неполным.

например, в таком сценарии ошибок не возникает:

https://rextester.com/BBCBL58569


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// input arg by value
// return by value
struct book get_book(struct param) noexcept;
 
void foo() noexcept;
 
int main()
{
    // you can't use 'book', or 'param', so you can`t use 'get_book',
    // but you can use an 'foo'
    foo();
}
 
struct book{};
struct param{};
 
book get_book(param) noexcept { return {}; }
 
void foo() noexcept
{
    // here the 'book' and 'param' are already defined, 
    // so a 'get_book' can be used
    get_book({});
}
0
30.07.2021, 11:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2021, 11:55
Помогаю со студенческими работами здесь

Библиотеки
Скажите какие есть библиотеки в с++.И для чего они нужны.

Библиотеки С++
Есть ли такая библиотека, которая распознаёт существующие слова в файле. Подскажите, очень нужно)

Библиотеки
Установил visual studio 2017, после этого все стандартные библиотеки куда-то пропали,старые...

Библиотеки Си
Скиньте ссылку где можно посмотреть самые распространенные библиотеки с описанием функций которые в...

библиотеки в си++
помогите с библиотекой для распознавания русского алфавита

Библиотеки
• <ifstream> - для работы с входными потоками, • <ofstream> - для работы с выходными потоками...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru