Следует ли использовать предварительные декларации вместо включений везде, где это возможно?

Всякий раз, когда объявление класса использует другой класс только в качестве указателей, имеет ли смысл использовать прямое объявление класса вместо включения файла заголовка, чтобы превентивно избежать проблем с циклическими зависимостями? поэтому вместо того, чтобы:

//file C.h
#include "A.h"
#include "B.h"

class C{
    A* a;
    B b;
    ...
};

сделайте это вместо этого:

//file C.h
#include "B.h"

class A;

class C{
    A* a;
    B b;
    ...
};


//file C.cpp
#include "C.h"
#include "A.h"
...

Есть ли причина, почему бы не сделать это везде, где это возможно?

Ответы на вопрос(9)

Ваш ответ на вопрос