Как сказал @Billy ONeal, главное, что #include - это директива препроцессора , которая вызывает код "^ C, ^ V" (копирование-вставка) кода, что приводит к времени компиляцииувеличение.
Лучшей политикой в C ++ является предварительное объявление всех возможных классов в файлах ".h" и просто их включение в файл ".cpp".Он изолирует зависимости, так как проект C / C ++ будет каскадно перестраиваться при изменении зависимого включаемого файла.
Конечно, компиляторы M $ и его предварительно скомпилированные заголовки, как правило, делают противоположное, заключая в себе то, что вы предлагаете.Но любой, кто пытался перенести код на эти компиляторы, хорошо знает, насколько он вонючий.
Некоторые библиотеки, такие как Qt, широко используют предварительные объявления.Посмотрите на него, чтобы понять, нравится ли вам его вкус.