Ciao e grazie per la lettura. questo potrebbe essere solo che rientrano nella categoria delle 'preferenze personali' ma in ogni caso qui andiamo ...Definizione del costruttore nel file di intestazione VS file di implementazione (.cpp)
posso definire il corpo di un costruttore della classe nella classe .h file o nel file di implementazione cpp. Questi due stili sono probabilmente identici per quanto riguarda il compilatore in un progetto specifico (progetto per me significa dll). Lo stesso vale per qualsiasi funzione membro realmente: possono essere definiti nel file di intestazione o semplicemente dichiarati lì e quindi definiti nel file cpp.
TUTTAVIA ...
ho scoperto che se ho bisogno di includere file di intestazione tale classe (s) in diversi progetti (il che significa che in ultima analisi, il codice che utilizza il file di intestazione finisce in un diverso dll) quindi avere l'implementazione effettiva nel file di intestazione causa alcuni grattacapi alla compilazione (non al collegamento ... non arrivo nemmeno a quel punto). Perché? Beh, non voglio andare troppo in dettaglio ma il compilatore cerca ovviamente di risolvere tutte le funzioni che potrebbero essere definite in altri file header ... costringendo il povero sviluppatore a iniziare a tirare in vari file header eetc ...
LONGSTORY breve:
Non è sempre meglio mantenere i file di intestazione liberi da qualsiasi implementazione e usarli per le "dichiarazioni"? Ciò renderebbe più facile includerli in più di un progetto senza dover portare con sé un sacco di spazzatura in più.
Qual è la vostra opinione? Grazie!
Esistono anche casi in cui è possibile inserire un'implementazione nell'intestazione. Supponiamo che se due file diversi entrambi siano necessari per includersi l'un l'altro, ciò non può essere fatto nell'intestazione, deve essere fatto nel cpp. –
Intendi "non può", non "può". Altrimenti, un buon punto. – Thomas
L'eccezione "banale" può essere applicata facilmente a un costruttore banale. Non c'è motivo di trattarli in modo diverso o di non averli anch'essi in linea. –