Es macht die Funktion rein virtuell im Gegensatz zu virtuellen.
Standardmäßig ist keine Implementierung vorgesehen, und die Absicht ist, dass die Funktionsimplementierung von einer erbenden Klasse angegeben werden muss. Dies kann jedoch überschrieben werden.
Manchmal werden vollständige Klassen angezeigt, in denen alle Elementfunktionen auf diese Weise als rein virtuell angegeben sind.
Dies sind abstrakte Basisklassen, manchmal als Interface-Klassen bezeichnet, und der Designer des ABC sagt Ihnen: "Ich habe jetzt eine Idee, wie diese Funktionalität für alle Spezialisierungen dieser Basisklasse implementiert werden würde. Aber Sie Alle müssen definiert sein, damit Ihre Spezialisierung funktioniert und Sie wissen, wie sich Ihr Objekt verhalten soll ".
Edit: Hoppla, habe gerade die Tatsache entdeckt, dass das Mitglied rein virtuelle Funktion ist privat. (Danke Michael) Das ändert die Dinge etwas.
Wenn diese Basisklasse mit privater Vererbung vererbt wird, ändert sich die Situation. Was der Designer der Basisklasse eigentlich macht, ist, dass, wenn Ihre abgeleitete Klasse eine nicht-private Funktion in der Basisklasse aufruft. Ein Teil des Verhaltens wurde an Ihre Spezialisierung der Funktion in Ihrer abgeleiteten Klasse delegiert. Das nicht private Mitglied macht "etwas" und ein Teil dieses "Etwas" ist ein Aufruf über die reine virtuelle Basisklassenfunktion zu Ihrer Implementierung.
Also einige öffentliche Funktion in Foo ruft die Bar-Funktion in Foo, und es beruht auf der Tatsache, dass Sie eine spezielle Implementierung der Bar-Funktion für Ihren speziellen Fall bereitstellen wird.
Scott Meyers bezeichnet dies als "umgesetzt in Bezug auf".
BTW Nur kichern über die Anzahl der Antworten, die schnell von Leuten gelöscht wurden, die auch das "Kleingedruckte" in der Frage nicht sahen! (-:.
HTH
prost,
Es tut mir leid, welcher Teil verwirrt Sie genau? – drxzcl
Der "private" Teil. – liori
Ich weiß nicht, ob Leute den vorherigen Kommentar aufheben, weil es komisch klingt oder weil sie auch verwirrt sind ... –