Überlegen Sie:
%Vor%Ich habe Code ähnlich dem folgenden geschrieben und es gab einen Fehler:
pure-specifier auf Funktionsdefinition Kompilation beendet wegen -WFatal-Fehler.
Als ich ihn fragte, zeigte er mir das folgende Zitat aus dem Standard:
Eine virtuelle Funktion, die in einer Klasse deklariert ist soll definiert oder für rein erklärt werden (10.4) in dieser Klasse oder beides; aber nein Diagnose ist erforderlich (3.2).
Ich kann nicht verstehen, was es bedeutet, und ich denke, das ist irgendwie nicht relevant.
PS: Wenn das nicht das relevante Zitat ist, bitte führe mich zum richtigen, damit ich ein besseres Gegenargument haben kann.
Eine reine virtuelle Funktion kann eine Definition haben (außerhalb der Klassendefinition). Das ist völlig optional. Aber was Sie versuchen zu tun, ist einfach falsch, weil
C ++ 03 [Sektion 10.4/2
] sagt:
[Hinweis: Eine Funktionsdeklaration kann keinen reinen Spezifizierer und keine Definition bereitstellen - Endnote] [Beispiel:
%Vor%
Sie können jedoch schreiben
%Vor% Sie können eine "reine" virtuelle Funktion haben, d. Basisklasse hat keine Implementierung der Funktion
und optional stellen eine Implementierung bereit, die abgeleitete Klassen überschreiben .
%Vor%ODER
Sie können eine "nicht-reine" virtuelle Funktion haben und eine Standard oder leere Implementierung bereitstellen
%Vor%Tags und Links c++