Возможный дубликат:
В C ++, почему есть заголовочные файлы и файлы cpp?
Исходя из C # фона, я считаю заголовочные файлы действительно раздражающими. Они необходимы даже с C ++ 11?
C ++ нужны заголовочные файлы (и libs тоже) так же, как C # нужны ссылочные сборки.
Да, потому что он все еще основан на C. Вы можете ответить на свой вопрос: не используйте их и не пытайтесь компилировать без них. Если вы не можете, то компиляторы все еще требуют их.
Я не имею в виду это как тавтологию. Если языковая спецификация по-прежнему требует их, а компиляторы соответствуют спецификации, то было бы огромным усилием измениться. И дебаты заняли бы очень много времени. Это звучит как вопрос, который предназначен для чего-то большего, чем просто провокация и дебаты без реального конца.
Да. Предположим, вы хотите разработать DLL или SO. Как разработчик должен знать, какие функции предлагает эта библиотека? Поэтому ему нужны прототипы, называемые API, для включения в пользовательские проекты. Таким образом, каждый разделяет декларацию и реализацию. Вы объявляете, какие функции доступны, но вы всегда можете изменить внутренний код.