Sono una specie di novità nello sviluppo di software su larga scala in C ++, e mi stavo chiedendo dal lato del design delle cose.
Leggevo questa domanda , e ho pensato che, nel complesso, una volta che superare le definizioni costanti e altri argomenti banali, I file di intestazione C ++ sono solo definizioni API :
Definiscono ciò che altri programmatori (o te stesso da altri moduli) saranno in grado di usare (classi, funzioni pubbliche), ma nessuna classe o funzione privata dovrebbe essere definita al suo interno. È come se il file di intestazione definisse le astrazioni (interfacce ...) e il file sorgente lo implementasse. Una volta compilato il file sorgente, i dettagli dell'implementazione vengono nascosti e rimangono le intestazioni pubblicamente disponibili che definiscono cosa può fare il modulo.
Ho sentito che questa visione della separazione di file header / sorgente era molto più facile da capire e da seguire rispetto alle solite spiegazioni, dal momento che puoi semplicemente pensare "sarebbe XXX
essere materiale API pubblicamente disponibile, o è un dettaglio di salsiccia" essere nascosto in un file sorgente non rivelato? "
Il mio modello mentale di file di intestazione è approssimativamente corretto? Cosa mi è mancato?