P
RHBaum schrieb:
Dh eine Methode kann pure virtual sein und dennoch eine Definition haben (nur halt nicht im Header?)
IMHO ist das nicht vom Standard abgesegnet => Es kann gehen, muss aber nicht. Hier haben die compiler halt "Freiheiten".
Siehe Zitat von Nexus oben. pv + getrennte Definition ist nicht nur Okay, sondern ggf. auch durchaus notwendig. pv+Definition gleichzeitig ist laut Standard ill-formed. Natürlich dürfen auch hier compilerspezifische Extensions greifen, die das eigentlich ungültige C++ dann anstandslos und korrekt übersetzen. Ist dann eben nur nicht portabel.
[...] Das einzigste wie man den Code zum ausfuehren bekaeme ist ueber volle Qualifikation aka KlasseName::MethodenName, also so wie wenn man das "virtual" grundsätzlich austricksen woellte.
Ergo -> Tut man eigentlich ueberhaupt nicht.
Wenns nicht grade um Destruktoren geht, wo es Pflicht ist.
Man erreicht ähnliche Effekte ueber andere, sauberere, offensichtlichere und damit besser wartbare Sprachmittel.
Für nicht-Dtoren richtig. Wenn man eine Implementierung bereitstellt, muss man die auch irgendwo dokumentieren, damit der Anwender, der foo() in der abgeleiteten Klasse implementiert, das auch weiß. Wenn man stattdessen eine protected Funktion void defaultFooBehavior(); in der Klasse deklariert, weiß jeder, was Sache ist.