User 13204940 Ответов: 1

Явное определение включает или разрешает распространение


Привет,

Просто быстрый вопрос относительно наилучшей практики для этого. Допустим, у меня есть следующие файлы:

А. Ч.
Б. Ч.
С. ч.

И следующий код:

А. Ч.:
class A
{
    
}

Б. Ч.:
#include "A.h"

class B
{
private:
    A a;
}

С. ч.:
#include "A.h" // ?
#include "B.h" 

class C
{
private:
    A a;
    B b;
}


Поскольку C включает в себя B и B включает в себя A, это означает, что C может получить доступ к A. Однако, поскольку вам нужно быть осторожным с заголовками C++ из-за потенциально огромного влияния на время компиляции, было бы лучше явно сказать, что C включает в себя A, или позволить ему распространять это через B?

Хотя больше заголовков означает больше беспорядка, я бы предпочел явно определить его, если он будет действовать как ярлык для улучшения времени компиляции.

Что я уже пробовал:

Ничего, просто спрашиваю совета.

1 Ответов

Рейтинг:
12

CPallini

Поскольку заголовки в любом случае должны быть защищены от многократного включения, я не вижу никакого существенного влияния на время компиляции (в качестве примечания используйте предварительно скомпилированные заголовки для ускорения компиляции). Поэтому, на мой взгляд, это просто вопрос личного вкуса.


[no name]

Ладно, звучит неплохо, спасибо! :

CPallini

Добро пожаловать.