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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage