Si è corretto. I file di intestazione servono ad informare il compilatore (che compila i sorgenti uno ad uno) di cosa sarà disponibile al momento del linking (ovvero quando tutti i file compilati saranno uniti nell'eseguibile finale). Prima del linking la classe Memory non esiste "globalmente", ma solo dove Memory è definita. In parole provere il file di intestazione serve per dire al compilatore "sta tranquillo, al momento del linking troverai tutto".
Nel file header devono essere presenti i prototipi di funzione e la definizione della classe, altrimenti AD OGNI SORGENTE sarà compilato il metodo presente nell'header, quindi ti ritroveresti con x sorgenti compilati che contengono ognuno un metodo che si chiama allo stesso modo, fa le stesse cose e, inevitabilmente, entrerà in conflitto con gli altri x -1 metodi uguali, facendo sì che il linker ti consegni un bellissimo errore.
E' chiaro adesso?
|