Salve,
Sebbene la domanda possa lasciarlo intendere, non sono un programmatore alle prime armi. A causa dei miei studi ho grande esperienza con Java ma poca con C++. Per motivi lavorativi oggi sto riprendendo ciò che ho studiato all'università su quest'ultimo.
Ad oggi non ricordo, e sul web non trovo risposte soddisfacenti, sul perché in C++ è uso comune dividere le definizioni di classi in header e le implementazioni dei body in cpp.
Il mio insegnante per altro utilizzava entrambi i metodi, talvolta utilizzando solo file cpp, cosa che ho sempre ritenuto più naturale (probabilmente a causa di java).
Mi sono sempre chiesto se sia una "violazione" includere tutto il codice in file cpp o se ci sono motivi validi per dividere il codice usando headers, soprattutto da un punto di vista di qualità del codice.