it-swarm.com.de

Warum hat C ++ kein "reines" Schlüsselwort für virtuelle Funktionen?

Ich habe mich immer gefragt, warum wir codieren

virtual void MyFunction() = 0; 

und nicht

pure virtual void MyFunction();

Gibt es eine Referenz für die Grundlage dieser Entscheidung?

Aus Das Design und die Entwicklung von C++ - Bjarne Stroustrup - Addison-Wesley (ISBN 0-201-54330-3) - Kapitel 13.2.3:

Das neugierige = 0 Die Syntax wurde der offensichtlichen Alternative der Einführung eines neuen Schlüsselworts pure oder abstract vorgezogen, da ich zu diesem Zeitpunkt keine Chance sah, ein neues Schlüsselwort zu akzeptieren. Hätte ich pure vorgeschlagen, wäre Release 2.0 ohne abstrakte Klassen ausgeliefert worden. Da ich die Wahl zwischen einer schöneren Syntax und abstrakten Klassen hatte, entschied ich mich für abstrakte Klassen. Anstatt eine Verzögerung zu riskieren und bestimmte Kämpfe um pure zu führen, habe ich die traditionelle C- und C++ - Konvention verwendet, 0 zu verwenden, um nicht dort darzustellen .

Wie auch immer, mit Blick auf den C++ - Standard (§ 9.2 - Klassenmitglieder) = 0 heißt pure-specifier .

71
manlio