infatti ho detto A GRANDI LINEE se leggi bene![]()
non ho detto che c'è corrispondenza uno ad uno, ho detto che in generale molto spesso ti limiti ad usare un header C++ come dichiarazione di intenti nei casi in cui ti interessa dichiarare una classe che abbia determinati comportamenti e implementarla altrove e per qualche motivo vuoi bypassare il RTTI (quindi ti basta che risolva il tutto a tempo di compilazione).
Non dico che sia corretto, ma nella pratica codice di questo tipo in giro se ne vede e ne viene ancora prodotto.
Java o C# (o meglio i linguaggi OOP più puri di C++) non ti danno questa scelta, in C++ puoi ancora girarci intorno.
Nel caso sopra citato, la famosa interfaccia java la puoi IN GENERALE far corrispondere a quella parte di header, visto che cmq il linguaggio non ti consente di non usare ereditarietà e polimorfismo, visto che cmq hai definito una classe.