ab 198?: Bjarne Stroustrup: erweitert C um Klassen, dann virtuelle Funktionen (= vereinfachte Syntax für Benutzung von Funktionen in structs)
Objekt:
struct stack { int s [SIZE]; int top; struct stack_vtable * vtable; }; |
(virtuelle) Klasse:
struct stack_vtable { void (* push) (struct stack *, int); int (* pop ) (struct stack *); }; |
void stack_push (struct stack * this, int c) { ( this->s ) [ ( this->top )++ ] = c; }Methoden-Aufruf (
st.push (i);
)
st -> vtable -> push (st, i);
versucht ansonsten strenge Abwärts-Kompatibilität zu C (Quelltext und Objekt-Code!)
Das ist einerseits Grund für weiter Verbreitung der Sprache, andererseits eine schwere Einschränkung.