Ich habe mich immer gefragt, warum override
und final
nach dem Member-Function-Deklarator stehen müssen:
Für mich wäre es logischer, override
/ final
anstelle von virtual
:
Gibt es einen Grund dafür? Vielleicht ein Kompatibilitätsproblem mit vor C ++ 11?
Dies liegt daran, dass override
und final
sind keine Keywords .
Stattdessen sind sie spezielle Bezeichner .
Das bedeutet, dass Sie Variablen, Funktionen oder Typnamen (Typalias oder Klassen) mit diesen Namen deklarieren können.
Sie können nur wie Memberfunktionsmodifikatoren in einem sehr kleinen Kontext verwendet werden, in dem der Kontext dem Compiler vorher bekannt sein muss, wenn er die Quelle analysiert. Platzieren sie nach der Funktionsdeklaration ist eine sehr einfache Möglichkeit, Mehrdeutigkeit aus der C ++ - Grammatik für diesen Kontext zu entfernen.
Tags und Links c++