Come rappresentare il tipo di dati "di classe" in C o qualsiasi linguaggio di basso livello? [chiuso]

1

Sto scrivendo un semplice compilatore di linguaggio, attualmente è supportato solo dalla programmazione funzionale.

Voglio supportare il concetto OOP, ma non so esattamente come posso rappresentare un oggetto? solo da dove cominciare.

Modifica

Voglio solo come rappresentare un tipo di dati di classe, non come ereditarietà, ecc.

    
posta CodeMan 07.01.2015 - 18:03
fonte

1 risposta

8

Gli oggetti semplici sono solo un struct che contiene tutti i campi. I metodi tipicamente prendono un puntatore a quel struct come loro primo argomento (come fa python). Questa semplice forma di OOP viene eseguita sempre in C

L'ereditarietà rende le cose più complicate. È possibile aggiungere un puntatore all'oggetto padre dall'oggetto figlio o includere tutti i campi del genitore. I metodi virtuali richiedono un vtable come parte della struct, che è fondamentalmente un puntatore di funzioni per ogni metodo virtuale. È necessario aggiungere il codice che gestisce la spedizione polimorfica. Guarda GObject per un buon esempio di qualità di produzione di questo tipo di OOP in C.

    
risposta data 07.01.2015 - 18:33
fonte

Leggi altre domande sui tag