pure virtual class & constructor
-
hi!
kann ich in einer pure virtual class auch einen ctor vorgeben?danke
-
Mir fiel kein Grund ein, warum es nicht gehen sollte.
-
Wenn du einen virtuellen Konstruktor meinst, geht das nicht. Man kann Konstruktoren nicht auf Instanzen aufrufen, und virtual benötigt eine Instanz.
Wenn du einen normalen Konstruktor meinst, klar geht das. Allerdings würde ich die Klasse dann nicht mehr pure virtual nennen.
-
operator void schrieb:
Wenn du einen normalen Konstruktor meinst, klar geht das. Allerdings würde ich die Klasse dann nicht mehr pure virtual nennen.
Wenn ihr mit pure-virtual Klasse eine abstrakte Klasse meint, dann ist sie dies, solange auch nur eine pure-virtual Funktion in der Klasse vorhanden ist.
-
Allerdings würde ich die Klasse dann nicht mehr pure virtual nennen.
Eine Klasse "pure virtual" zu nennen ist eh pervers
In C++ gibt es abstrakte Klassen (abstract classes) und rein virtuelle Funktionen (pure virtual functions). Weder aber "pure virtual classes" noch "abstract methods".
-
btw: was spricht dagegen einer abstrakten Klasse einen vernünftigen Ctor zu geben? abstrakte Klassen müssen ja nicht zwangsläufig ein ein Interface sein...
-
Hallo!
die klasse sollte aber ein interface sein.
ist dieser code korekt?class ITree { public: ITree( int num ); // das ctor format soll bei allen abgel. klassen so sein virtual void add() = 0; };
danke
-
Ja, korrekt schon. Aber nicht gut. Ein virtueller Destruktor wär nicht verkehrt.
-
umsteiger schrieb:
// das ctor format soll bei allen abgel. klassen so sein
Was die abgeleiteten Klassen in ihren Konstruktoren machen, kannst du aber nicht beeinflussen.
Ich könnte von deiner Klasse zb folgende ableiten:class JTree : public ITree { public: JTree () : ITree(10) {} };
ich muss nur den basisklassenkonstruktor mit den passenden argumenten aufrufen.
(diesem solltest du allerdings eine definition spendieren)
Konstruktoren sind prinzipiell nie virtuell.