Soll eine virtuelle C ++ - Methodenimplementierung in einer .cpp-Datei als virtuell markiert werden?

8

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?

    
David Lobron 11.09.2014, 21:33
quelle

2 Antworten

11

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%

Ссылка

    
4pie0 11.09.2014 21:35
quelle
2

Gemäß dem C ++ Standard (7.1.2 Funktionsspezifizierer)

  

5 Der virtuelle Spezifizierer soll nur im Initial verwendet werden   Deklaration einer nicht statischen Klassenmemberfunktion;

    
Vlad from Moscow 11.09.2014 21:44
quelle

Tags und Links