Как писал Адам, включение заголовков в заголовок увеличивает ваши блоки компиляции, что снижает производительность. Но это заметно только в крупных проектах. Это очень важно, например, для заголовков ОС, таких как <windows.h>
. Вот почему были скомпилированы заголовки и WIN32_LEAN_AND_MEAN .
Но есть и другая проблема с производительностью сборки, если вы без необходимости включаете заголовки в другой заголовок: вам может потребоваться перестроить больше при изменении заголовка.
рассмотреть следующие вопросы:
// A.h
class A
{
...
}
// B.h
#include "A.h"
class B
{
A *_a;
...
}
Если вы измените A.h
, среда IDE будет перекомпилировать источники, включающие B.h
, даже если они не используют класс A
. Но если вы измените B.h
на:
// B.h
class A; // forward declaration, declared in "A.h"
class B
{
A *_a;
...
}
В этом больше нет необходимости. Это может иметь заметное значение даже для небольших проектов.