Warum ist 'virtual' optional für überschriebene Methoden in abgeleiteten Klassen?
Wenn eine Methode als @ deklariert wivirtual
In einer Klasse werden die Überschreibungen in abgeleiteten Klassen automatisch als @ betrachtevirtual
auch, und die C ++ - Sprache macht dieses Schlüsselwortvirtual
optional in diesem Fall:
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
Meine Frage ist: Was ist der Grund dafür,virtual
Optional
Ich weiß, dass es nicht unbedingt notwendig ist, dem Compiler das mitzuteilen, aber ich denke, dass Entwickler davon profitieren würden, wenn eine solche Einschränkung vom Compiler erzwungen würde.
ZB manchmal, wenn ich den Code anderer lese, frage ich mich, ob eine Methode virtuell ist und ich muss ihre Superklassen aufspüren, um das festzustellen. Und einige Codierungsstandards Googl) mache es zu einem 'Muss' um das @ zu setzvirtual
Schlüsselwort in allen Unterklassen.