virtual/override



  • wenn ich zB eine Funktion einer Basisklasse, durch eine Funktion in einer abgeleitete KLasse überschreiben möchte, benutze ich das Schlüsselwort virtual, was aber bezweckt der Ausdruck override?



  • Der Ausdruck "ovverride" wird nur bei C++/CLI verwendet und zeigt dem Compiler, dass Du *wirklich* die Funktion "überladen" willst... ansonsten musst Du "new" verwenden oder der Compiler zeigt eine Fehlermeldung an.
    Der Compiler zeugt auch eine Fehlermeldung an, wenn die basis-Methode nicht als "virtual" markiert ist.

    Das ist z.B. viel schöner als in (native) C++. Hier muss man immer Raten, ob es nun wirklich überladen ist oder nicht (ader wenn sich bei der Basisklasse Parameter ändern, wird plötzlich Deine "überladene" Methodenicht mehr aufgerufen; ohne Compiler-Fehler (so z.B. der Fall bei einigen MFC-Funktionen bei der portierung von VC6 nach VC2005/8)


Anmelden zum Antworten