Alcune classi, ad esempio le eccezioni o i modelli, richiedono solo il file di intestazione (.h), spesso non è associato a .cpp.È buona norma creare sempre un file .cpp per ogni .h in un progetto C++?
Ho visto alcuni progetti erano (per alcune classi) non ci sono file .cpp associati ai file di intestazioni, forse perché l'implementazione è talmente breve che viene eseguita direttamente in .h, o forse per altri motivi, come le classi template, in cui è obbligatorio includere l'implementazione nell'intestazione.
Qual è la tua opinione, se una classe è troppo corta, dovrei evitare di creare un file .cpp e scrivere il codice direttamente nel file di intestazione? Se il codice è scritto nel file di intestazione, dovrei includere un file .cpp vuoto in modo che i file nel progetto rimangano coerenti?
Non sono davvero d'accordo, il codice scritto all'interno di un'intestazione deve essere compilato tutte le volte che viene incluso mentre deve essere compilato una sola volta se si trova all'interno di un file sorgente (.c). Tuttavia sono d'accordo che è abbastanza conveniente e il tempo di compilazione non è un grosso problema per me. – Ben
@Ben, l'ipotesi sarebbe che qualsiasi codice che verrebbe compilato nel file h sarebbe un codice di dimensioni in linea (o almeno un codice che potrebbe essere aggiunto a un'intestazione precompilata). Pertanto, il tempo di compilazione per il file h non sarebbe un problema. – kidnamedlox
@kidnamedlox: esattamente. @ Ben: se includi codice di qualsiasi dimensione> rispetto a ciò che dovrebbe essere in linea, concordo sul fatto che un file .cpp sia una buona idea. È solo quando il codice è molto piccolo, penso che mettere un file .cpp vuoto solo per il piacere di un file .cpp non sia una buona pratica. –