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.