Virtuell rein virtuell
-
@wob Das mag schon sein, aber ich habe doch gesagt, dass ich der Ansicht war das mein halbwissen was ich hier präsentiere nicht wirklich einen nützlichen Ansatz dazu geben würde. Aber wenn ihr das möchtet dann wartet kurz paar Minuten und ich schreibe auf was ich dazu habe. Wobei ich bezweifele jetzt noch eine Antwort zu bekommen.
-
@manni66 Doch?
-
@Betacoder sagte in Virtuell rein virtuell:
@wob Das mag schon sein, aber ich habe doch gesagt, dass ich der Ansicht war das mein halbwissen was ich hier präsentiere nicht wirklich einen nützlichen Ansatz dazu geben würde.
Sinn und Zweck von Übungsaufgaben bestehen darin, dass man sich selbst dazu Gedanken macht. Es nützt nichts, wenn andere hier Musterlösungen für Deine Aufgaben erstellen. Insofern wirst Du nicht darum herum kommen ein Mindestmaß an Eigenleistung zu erbringen.
P.S. Die Eingangsfrage zu löschen, wenn es schon einige Antworten dazu gibt, ist auch nicht höflich. Das ist nun sehr zurückhaltend formuliert.
-
Schon die zweite absichtliche Threadzerstöung von Betacoder. Bitte zur Kenntnis nehmen bei weiteren Fragen.
-
Virtuelle Methoden können überschrieben werden, rein virtuelle müssen es.
Virtuelle Methoden ist in der Basisklasse definiert und rein virtuelle müssen in einer abgeleiteten Klasse definiert sein. Diese können nicht implementiert werden.
void out();
void out()=0=> rein virtuelle wird null gesetzt
-
@Betacoder sagte in Virtuell rein virtuell:
Virtuelle Methoden können überschrieben werden, rein virtuelle müssen es.
Wenn man nur
virtual
undpure virtual
betrachtet ist das korrekt. Auch andere Methoden lassen sich überschreiben, wobei das hier vom Thema wegführt.Virtuelle Methoden ist in der Basisklasse definiert und rein virtuelle müssen in einer abgeleiteten Klasse definiert sein. Diese können nicht implementiert werden.
Nein
Denk noch einmal darüber ob das so sinnvoll ist. Wenn man mit einer Klassenhierachie arbeitet, ist es dann sinnvoll, dass einepure virtual
nur in einer abgeleiteten Klasse vorkommt?void out()=0=> rein virtuelle wird null gesetzt
Das ist nur die C++ Schreibweise dafür.
-
@john-0 sagte in Virtuell rein virtuell:
Nein
Denk noch einmal darüber ob das so sinnvoll ist. Wenn man mit einer Klassenhierachie arbeitet, ist es dann sinnvoll, dass eine pure virtual nur in einer abgeleiteten Klasse vorkommt?Das ist wahr, aber das hat er auch nicht gesagt.
Implementiert werden können sie jeweils nur in einer darunterliegenden Klasse. Aufgerufen kann die pure virtual dann aber auch in einer Methode der abstrakten Klasse, außer im Konstruktor wohl.
-
Man kann auch Funktionen, die pure virtual sind, implementieren:
struct Base { virtual int foo() const = 0; }; int Base::foo() const { return 7; } struct Derived : Base { int foo() const override; }; int Derived::foo() const { return Base::foo() * 2; } int main(int argc, char **argv) { Derived d; return d.foo(); }
-
Achso. Das wusste ich so noch nicht.
Aber man kann keine abstrakte Klassen instanziieren.
-
@Betacoder sagte in Virtuell rein virtuell:
void out()=0=> rein virtuelle wird null gesetzt
Nein,
virtual void out()=0;
-
@Betacoder Da war ein Übersetzer am Werk, der von Tuten und Blasen keine Ahnung hat. Pure virtual wird normalerweise nicht übersetzt, das verseteht man sonst ned,