nicht ableitbare klasse

netrobot

Erfahrenes Mitglied
wenn ich eine klasse definiere, darf es aber nicht mehr weit abgeleitet werden.
was für ein schlüsselwort soll ich schreiben?
 
Aus der Hüfte geschossen würde ich sagen, da gibt es in C++ kein Schlüsselwort für.

Du kannst aber einfach den Konstruktor private machen. Dann kannst du von der Klasse aber nur über eine Memberfunktion eine Instanz erzeugen. Das wird bei Singletons des öfteren angewandt.
 
Um von einer Klasse kein Objekt mehr erzeugen zu können, musst du die Klasse ABSTRAKT machen, das erreichst du, indem du mindestens eine REIN virtuelle Methode hast.

Beispiel

class...
{
public : virtual void Koerper(void) = 0; // Rein virtuelle Funktion
....
};


Das =0 für die Methode macht die Methode Rein virtuell, damit sollte es nicht mehr möglich sein ein Objekt der Klasse zu erzeugen.

Damit sollte es dann auch nicht mehr möglich sein, die Klasse abzuleiten.
 
Zuletzt bearbeitet:
Beispiel

class...
{
public : virtual void Koerper(void) = 0; // Rein virtuelle Funktion
....
};


Das =0 für die Methode macht die Methode Rein virtuell, damit sollte es nicht mehr möglich sein ein Objekt der Klasse zu erzeugen.

Damit sollte es dann auch nicht mehr möglich sein, die Klasse abzuleiten.

Warum sollte es nicht mehr möglich sein, das wenn man eine rein virtuelle Funktion defniert das die Klasse in der sie defniert ist dann nicht mehr ableitbar ist?
Rein virtuelle Funktionen sagen lediglich das die Klasse in der sie defniert ist, eine ABC ist
und das sie somit eine Schnittstelle zu Sub Klassen zur Verfügung stellt, welche diese
Schnittstellen dann überschreiben !müssen!.
=> rein virtuelle Funktionen sind für Schnittstellen Vererbung gedacht...

Ein Trick um eine Klasse nicht mehr ableitbar zu machen, wäre sämtliche Konstruktoren (!mind den Defualtkonstruktor!)als privat zu deklarieren, eine andre Möglichkeit wie etwa in java das
Schlüsselwort "final" gibt es in C++ nicht...

Gruß

RedWing
 
Zuletzt bearbeitet:
Zurück