Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
#1

Для чего нужны заголовочные файлы? - C++

05.02.2013, 17:36. Просмотров 3499. Ответов 9
Метки нет (Все метки)

Ещё раз всем здрасьте , последний вопрос в котором я не могу разобраться - Для чего нужны заголовочные файлы ???
Для чего нужны эти файлы .h объясните мне на русском языке а не на теоретическом !!!
Ну и пример что бы до конца понел , спасибо заранее
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2013, 17:36     Для чего нужны заголовочные файлы?
Посмотрите здесь:
C++ Для чего нужны файлы с расширением .h, .c?
C++ Заголовочные файлы .h, файлы исходного когда c/c++ и установление связи между ними
Работа в Visual Studio 2015 - как добавить файлы исходного кода и заголовочные файлы? C++
Для чего нужны интерфейсы? C++
Для чего нужны указатели? C++
Для чего нужны вложенные структуры? C++
Для чего нужны callback-функции C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
05.02.2013, 17:48     Для чего нужны заголовочные файлы? #2
Представьте, что вы написали программу в миллион строк кода. А потом оказалось, что туда надо внести малюсенькие изменения, для начала вам надо в этих миллион строках как то сориентироваться, ну да ладно, вы же не лыком шиты, вы компьютерщик со стажем, Ctrl + F, усмехаетесь вы. Ну и через несколько итераций поиска вы все же находите нужную вам часть, потом понимаете, что она то функционирует нормально, вы снова набираете Ctrl + F и ищите другую часть и так долго-долго.
Но далее. Вы нашли наконец причину ошибки и исправили её. Представьте, сколько будет длиться компиляция всего файла? А если с первого раза ошибку не удалось искоренить, идем в начало?
Часто программисты отделяют части кода, которые можно использовать потом повторно, просто включив их, или просто разъединяя все по логическим маленьким кирпичикам, чтобы было легче потом ориентироваться, или разделяют код, чтобы компиляция шла не по несколько часов. Ведь при изменении лишь .h файла мы не будем трогать весь большой проект.
Надеюсь, аргументы показались вам достаточно вескими.
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
05.02.2013, 18:02  [ТС]     Для чего нужны заголовочные файлы? #3
А можно пример кодом ещё ? : D
в основном понел , только как применять не совсем понел , напиши мне мини код как применять и всё будет ок , спасибо большое!
MrGluck
Модератор
Эксперт CЭксперт С++
7178 / 4344 / 634
Регистрация: 29.11.2010
Сообщений: 11,822
05.02.2013, 18:14     Для чего нужны заголовочные файлы? #4
Например вот:
SuperClass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef _SUPER_C_ // инклюд нварды чтобы хедер не включился 2 раза в проект
#define _SUPER_C_
 
 
// описываем лишь интерфейс, без реализации
 
class Putin
{
    public:
        // ...
        void destroyHouse();
        // ...
};
 
#endif
SuperClass.cpp
C++
1
2
3
4
5
6
7
8
// данный файл содержит реализацию методов из файла SuperClass.h
#include <iostream>
#include "SuperClass.h"
 
void Putin::destroyHouse()
{
    std::cout << "Bang bang!!!\a\n";
}
main.cpp
C++
1
2
3
4
5
6
7
8
#include "SuperClass.h"
 
 
int main()
{
    Putin p;
    p.destroyHouse();
}
Мы описываем класс в отдельных файлах. В одном объявляем интерфейс, в другом реализуем его, т.о. повышается удобство работы.
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
05.02.2013, 18:48  [ТС]     Для чего нужны заголовочные файлы? #5
Ооооо , огромное спасибо , понел , ваще респект , ещё раз спасибо
Rem_
24 / 24 / 3
Регистрация: 05.02.2013
Сообщений: 244
Записей в блоге: 8
05.02.2013, 18:48     Для чего нужны заголовочные файлы? #6
По русски.
Вместо строчки #include "xxxxx.h" препроцессор вставляет текст из файла xxxxx.h
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
05.02.2013, 18:52     Для чего нужны заголовочные файлы? #7
MrGluck, Это назначение не только заголовочных файлов, но разбиения проекта на файлы в принципе.

Гораздо более серьезная мотивация - необходимость линковаться со сторонними библиотеками. Для этого нужна сама библиотека и чтобы ее использовать - объявления сущностей, реализованных в ней. Теоретически такие объявления можно написать и руками, что само по себе глупо. Поэтому разработчик библиотеки может предоставить только саму сборку и заголовочные файлы, которые по сути объявляют интерфейс библиотеки.
Святогор
0 / 0 / 0
Регистрация: 27.06.2016
Сообщений: 20
16.01.2017, 00:50     Для чего нужны заголовочные файлы? #8
Я правильно понял? Заголовочный файл содержит всякого рода прототипы структур классов но никаких кземпляров?
Потом во втором файле предложено хранить экземпляры классов и структур а также функции а в третьем файле главная функция мейн которая все это запускает?

И в том ли смысл что всеэти файлы можно отдельно компилировать?
Renji
1878 / 1276 / 290
Регистрация: 05.06.2014
Сообщений: 3,642
16.01.2017, 09:06     Для чего нужны заголовочные файлы? #9
Цитата Сообщение от Святогор Посмотреть сообщение
Я правильно понял? Заголовочный файл содержит всякого рода прототипы структур классов но никаких кземпляров?
Не совсем. Например, можно туда закинуть тело inline функции.
Цитата Сообщение от Святогор Посмотреть сообщение
И в том ли смысл что всеэти файлы можно отдельно компилировать?
Смысл в том что все эти файлы нужно компилировать отдельно, ничего не зная о содержании остальных файлов. Поэтому, обычные функции в h кидать нельзя - каждый cpp файл попытается скомпилировать свою копию функции (он же не знает что у соседа уже скомпилировано) и будет ненужное дублирование кода. А inline можно, так как inline и означает что код функции просто втыкается во все места из которых он вызван. Вышло 100500 копий? Just as planned.

Вообще говоря, все это очевидные рудименты времен когда компьютеры были большие, а память маленькой. Но у разработчиков похоже никак не дойдут руки перепилить все под современные реалии. При том что ключи компилятора включающие глобальную оптимизацию и компилирующие все cpp разом давно есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2017, 15:21     Для чего нужны заголовочные файлы?
Еще ссылки по теме:
C++ Для чего нужны битовые операции?
C++ Для чего нужны указатели на функции?
try catch throw для чего нужны? C++
C++ для чего нужны хеш таблицы?
C++ Понимание для чего вообще нужны указатели?

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

Или воспользуйтесь поиском по форуму:
Святогор
0 / 0 / 0
Регистрация: 27.06.2016
Сообщений: 20
16.01.2017, 15:21     Для чего нужны заголовочные файлы? #10
Согласен. В современном программировании много рудиментов. И сами языки и среды программирования отличаются совершенно зверинной недружелюбностью динозавров а синтаксис так вообще одна сплошная подстава.
Меня забавляют всяческие мнемокоды при терабайтных пространствах уже пора полностью писать названия операторов чтобы без хелпов все было понятно.
Yandex
Объявления
16.01.2017, 15:21     Для чего нужны заголовочные файлы?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru