Was hab ich hier verbrochen?
-
mach die funktion lieber pure virtual, denn dann wird direkt ne fehlermeldung geworfen, wenn eine Klasse diese methode nicht überschreibt.
-
Ein implementierter virtual Destruktor für die Klassen von denen abgeleitet wird ist oft auch nicht schlecht.
-
Tobain schrieb:
otze schrieb:
ImageReader::readImage muss pure virtual sein, bei dir ist er aber nur virtual.
Worin besteht dabei der Unterschied zwischen pure virtual und nur virtual?
Ich komme von der Javafront rübergeschwappt und habe in den verschiedensten Tutorials noch nicht alzu sehr viel darüber gefunden...
pure virtual ist so wie abstract in Java.
-
ppc schrieb:
Tobain schrieb:
otze schrieb:
ImageReader::readImage muss pure virtual sein, bei dir ist er aber nur virtual.
Worin besteht dabei der Unterschied zwischen pure virtual und nur virtual?
Ich komme von der Javafront rübergeschwappt und habe in den verschiedensten Tutorials noch nicht alzu sehr viel darüber gefunden...
pure virtual ist so wie abstract in Java.
Mit dem Unterschied, dass pure virtuals eine Definition besitzen können.
-
Mit dem Unterschied, dass pure virtuals eine Definition besitzen können.
Hmm, das versteh ich nicht. Ich dachte das pure betont gerade, dass keine Definition angegeben ist (also "=0") im Gegensatz zu virtual....
Erklär mal bitte
Mfg, smasher1985
-
Nein, pure heißt, dass eine Definition nicht benötigt wird und dass die Klasse abstrakt ist, d.h. nicht instantiiert werden kann. Es ist allerdings normalerweise unüblich, rein virtuelle Memberfunktionen zu definieren, von einer wichtigen Ausnahme abgesehen: Virtuelle Destruktoren müssen immer definiert werden, auch wenn sie rein virtuell sind.
edit: sinnentstellenden Typo korrigiert
-
Kapier ich nicht. Ich dachte immer:
virtual foo() { ///... }
ist eine virtuelle Funktion und muss eine Definition besitzen und
virtual foo() = 0;
ist pure virtual. Und wo soll da noch eine Definition hin??
Scheinbar sitz ich da einem Missverständnis auf..
Mit der Bitte um Aufklärung
smasher1985
-
-
die definition ist ihr name, ihre parameter und der rückgabetyp
die sind fest
es gibt aber keine implementation zu dieser methode
-
pure virtual kann doch eine implementation haben? ist das nicht irgendwie...sinnlos(ausser im falle des dtors...)?
-