Wie überschreibt man die virtuelle Funktion in gutem Stil? [C ++]

8

Jungs, ich weiß, diese Frage ist sehr einfach, aber ich habe in einigen Publikationen (Websites, Bücher) verschiedene Arten von override virtuellen Funktionen getroffen. Was ich meine ist: wenn ich Basisklasse habe:

%Vor%

In einigen Publikationen habe ich gesehen, dass einige Autoren einfach sagen würden, um dies zu überschreiben:

%Vor%

und einige würden immer noch das virtuelle Schlüsselwort wiederholen, bevor es ungültig wird. Welche Form des Überschreibens ist in gutem Stil? Danke für deine Antworten.

    
There is nothing we can do 14.03.2010, 19:03
quelle

3 Antworten

13

Das ist reine Geschmackssache. Einige schwache Argumente können hin und her hinsichtlich des Selbstdokumentationswerts einiger Stile gegenüber der Nicht-Redundanz anderer gemacht werden.

    
bmargulies 14.03.2010, 19:05
quelle
3

Es ist nicht notwendig, das virtuelle Schlüsselwort zu einer Methode hinzuzufügen, die Sie in einer Unterklasse überschreiben, da dieses Qualifikationsmerkmal nicht entfernt werden kann, indem Sie es in Unterklassen-Deklarationen weglassen.

Es empfiehlt sich jedoch, das virtuelle Schlüsselwort zu wiederholen, da es dokumentiert, welche abgeleiteten Funktionen in der Basisklasse virtuell sind.

Dies wird auch vom Handbuch 'High Integrity C ++ Coding Standard' empfohlen .

, das in den C ++ FAQ verlinkt ist.

    
MKroehnert 15.03.2010 01:53
quelle
0

Ich persönlich benutze beide Stile: virtual bedeutet, dass die Methode überschrieben werden kann.

Wir haben also zwei Fälle:

  • Wenn Sie möchten, dass der Benutzer Ihrer Klasse weiß, dass die Methode überschrieben werden kann, verwenden Sie das virtual -Schlüsselwort
  • Wenn Sie diese Tatsache lieber ausblenden möchten (weil Sie z. B. nach dem Template Pattern neue Methoden angeben), verwenden Sie nicht das Schlüsselwort virtual

Ich denke, es ist noch eine andere Art, das Schlüsselwort zu verwenden (ab?).

    
Matthieu M. 15.03.2010 09:13
quelle