Ich habe eine virtuelle C ++ - Methode, die ich in einer .h-Datei definiere und in einer .cc-Datei implementiere. Soll die Implementierung in der .cc-Datei als virtuell markiert werden oder nur die Deklaration in der .h-Datei? Zum Beispiel hat mein Header:
%Vor%Die Methode ist in meinem .cc implementiert:
%Vor%Soll die Implementierung virtuell markiert werden, oder ist der obige Code OK? Ist das wichtig?
C ++ Standard n3337 § 7.1.2 / 5 sagt:
Der virtuelle Spezifizierer darf nur in der ursprünglichen Deklaration von verwendet werden eine nicht statische Klassenmitgliedsfunktion;
Das Schlüsselwort virtual
kann nur innerhalb der Klassendefinition verwendet werden, wenn Sie die Methode deklarieren (oder definieren). Also ... es kann in der Implementierungsdatei verwendet werden, aber wenn es immer noch in der Klassendefinition ist.
Beispiel:
%Vor%Gemäß dem C ++ Standard (7.1.2 Funktionsspezifizierer)
5 Der virtuelle Spezifizierer soll nur im Initial verwendet werden Deklaration einer nicht statischen Klassenmemberfunktion;