Reine virtuelle und Inline-Definition

8

Ü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.

    
Nivhus 01.10.2010, 02:34
quelle

2 Antworten

5

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%     
Prasoon Saurav 01.10.2010, 02:44
quelle
-1

Sie können eine "reine" virtuelle Funktion haben, d. Basisklasse hat keine Implementierung der Funktion

%Vor%

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%     
Arun 01.10.2010 02:44
quelle

Tags und Links