Я никогда не понимал, почему С++ требует отдельный заголовочный файл с теми же функциями, что и в .cpp файле. Это делает создание классов и рефакторинг их очень сложными, и он добавляет ненужные файлы в проект. И тогда возникает проблема с включением заголовочных файлов, но при этом необходимо явно проверить, включено ли оно.
С++ был ратифицирован в 1998 году, так почему он разработан таким образом? Какие преимущества имеет отдельный файл заголовка?
Следующий вопрос:
Как компилятор находит файл .cpp с кодом в нем, когда все, что я включаю, это .h файл? Предполагает ли он, что .cpp файл имеет то же имя, что и файл .h, или действительно ли он просматривает все файлы в дереве каталогов?