Eventuali duplicati:
In C++ why have header files and cpp files?Confuso circa lo scopo effettivo di file header in C++
non riesce quasi mai C++ file di intestazione, per due motivi contrastanti:
Pensavo che lo scopo dei file di intestazione fosse in generale quello di separare l'interfaccia e l'implementazione. In altre parole, il client utilizza il file di intestazione per imparare come utilizzare la classe, ma non deve preoccuparsi di come la classe implementa effettivamente questa funzionalità internamente.
Perché, quindi, sono variabili private di una classe C++ specificate nel suo file di intestazione?
Mi sembra che avere variabili private nel file di intestazione violano la separazione tra interfaccia e implementazione. Intuitivamente, penserei che sarebbe più sensato che le variabili private fossero nel file sorgente, poiché questo è il file che non è esposto al mondo esterno.
Forse sto solo fraintendendo lo scopo dei file di intestazione e 1. sopra è completamente sbagliato? In che modo?
Dove hai preso 1. Da? – Robottinosino
Oltre alle funzioni di 'friend', scommetto che è solo una limitazione tecnica per il compilatore a determinare la dimensione della classe. – Mysticial
@DaveSwersky Quel duplicato non risponde alla seconda domanda dell'OP, "Perché, allora, sono le variabili private di una classe C++ specificate nel suo file di intestazione?" – Mysticial