Вот пример, чтобы не быть голословным:
https://github.com/linuxdeepin/dde-file-manager/blob/master/src/dde-file-manager/singleapplication.h
#include <QtGlobal>
#include <DApplication>
#include <durl.h>
QT_BEGIN_NAMESPACE
class QLocalServer;
class QLocalSocket;
QT_END_NAMESPACE
Здесь есть include а есть просто декларация class QLocalServer. А ведь
можно сделать и #include <QLocalServer> и тоже будет работать.
В чем разница и как лучше — включать или просто объявлять?
Для классов не применимо extern а для функций, к примеру, применимо. Эта запись class QLocalServer; — эквивалент extern-а для функций?