Ho cercato la paura SDK per il mio progetto universitario, ma hanno notato un certo codice in questo modo:Perché includere un'intestazione e inoltrare dichiarare la classe contenuta nello stesso file cpp?
foo.h
class Foo
{
public:
int iSomething;
};
Bar.cpp:
#include "Foo.h"
// Forward declarations
class Foo;
Is c'è qualche ragione particolare per inoltrare la dichiarazione E includere l'intestazione appropriata nello stesso file cpp? Oppure la dichiarazione anticipata è ridondante perché l'intestazione viene inclusa?
EDIT:
Ogni volta che ho visto nel codice, l'istruzione include sempre prima della dichiarazione in avanti.
Puoi elaborare? Originariamente ho scritto esattamente questa stessa cosa, ma poi ci ho pensato un po 'di più e ho pensato che se la barra in avanti-dichiara Foo, allora #include immediatamente Foo.h, dovrebbe a) produrre sempre la dichiarazione di Foo, e b) mai dipendere da un'altra intestazione che ha già dichiarato Foo. Puoi dare un esempio in cui la dichiarazione anticipata prima del #include aiuta effettivamente? – mgiuca
@mgiuca - riduce i tempi di compilazione. spesso il codice usa solo puntatori e non richiede mai la dimensione effettiva della classe [e non crea mai istanze].In tali circostanze, è sufficiente una dichiarazione anticipata, risparmiando il tempo di # includere altri file. –
@Foo Bah Sì, questa è una buona ragione per utilizzare una dichiarazione di inoltro * invece di * un #include. Ma non spiega perché avresti entrambi. Se si dispone di entrambi, è necessario elaborare il file incluso, indipendentemente dal fatto che sia stato utilizzato o meno. – mgiuca