In ogni lingua - ci sono due fasi per la creazione del codice binario finale - compilazione e collegamento (ovviamente, c'è il caricamento ma non ha molto impatto qui). Al momento della compilazione, è sufficiente inserire hook (la specifica delle funzioni che verranno chiamate) al posto appropriato. Il linker in realtà si unisce quando entrambi i codici reali sono disponibili. Finora non c'è differenza tra C ++ e Java.
Lì è , tuttavia, è necessario che il C ++ abbia una dichiarazione e una definizione separate. Se si mantiene l'implementazione nell'intestazione e se il file di intestazione cambia, il codice che è collegato deve essere ricompilato. Dove come se la definizione fosse in un file separato, il codice ha solo bisogno di essere ricollegato.
Comprendi che C ++ ha l'opzione per avere il collegamento statico che implica che il codice oggetto è stato risolto insieme all'applicazione chiamante.
Si prega di notare che sia in C che in C ++, non è invalido avere una programmazione nel file di intestazione o persino fare #include. significa solo che devi preoccuparti di come avviene il collegamento con questi file oggetto.
La situazione in Java è molto diversa. Ogni file di classe è compilato con un file .class. Infatti, la necessità della compilazione di funzioni di classe chiamante che è servita come una sezione di intestazione nel file .class. Tuttavia, in Java il collegamento finale viene eseguito solo all'interno del Runtime (la macchina virtuale) solo con le specifiche del codice byte del file di classe.
Vedi questo e this