Abstrakte Klassen enthalten keinen Code. Sie definieren nur die Schnittstelle. Sie können nicht instaziert werden!
Für die Instanzierung muss zuerst eine abgeleitete Klasse gebildet werden, welche die Schnittstellen definiert.
Abstrakte Funktionen sind ein Spezialfall bzw. der extremste Fall einer virtuellen Funktion. Sie werden pure virutal classes genannt.
// nicht instanzierbar class B { public: // können nur public sein virtual void f() = 0; // = 0, damit pure ist virtual void g() = 0; }
.
// abgeleitet Funktion ist instanzierbar class B1 : public B { public: void f() override; // kein virtual, dafür override void g() override; } B1 instanz_b;
Abstrakte Klassen sind für die Einheitlichkeit unter Code-Blöcken wichtig. Die Kompatibilität unter Klassen wird erzwungen. (Gleiche Abhandlungen heissen in allen Varianten gleich. )