In che modo esattamente il codice oop che scrivo in C++ o C#, ad esempio, traduce in codice macchina o nel caso di C# in bytecode? Voglio dire, come traducono gli oggetti?Come si traduce il codice orientato agli oggetti in codice macchina?
Nella programmazione procedurale è piuttosto ovvio come appare dopo la compilazione perché c'è effettivamente un vero supporto per le funzioni nel linguaggio macchina. Ma nel caso di programmazione oop non ci sono oggetti nel linguaggio macchina.
La mia teoria è che compila l'oggetto stesso in una sorta di struct C like che contiene solo dati (nessuna funzione membro) e quando viene chiamata una funzione memeber, se accetta un parametro addizionale che è la struttura dati dell'oggetto si. Ho ragione?
E per quanto riguarda il caso C++? Entrambi dovrebbero guardare nella stessa struttura o nella struttura della memoria alla fine no? Ci può essere più di un modo per farlo? Perché ad esempio puoi avere questa struct anche con le funzioni, ma io sottolineo che è improbabile perché costa più memoria se gli oggetti duplicano le stesse funzioni su ans over. – UnTraDe
Scrivi un programma C "ciao mondo". Compilalo con gcc -o hw hw.c. Problema objdump -d hw. È la stessa storia, quali cambiamenti sono solo i nomi degli strumenti e le istruzioni specifiche. IOW la CPU di destinazione è diversa: è virtuale in .net, reale in C++. –