2010-11-23 7 views
5

Mögliche Duplizieren:
Why pure virtual function is initialized by 0?Was bedeutet "= 0" in C++?

Hallo alle ..

Zunächst einmal, ich weiß, dass Sie eine rein virtuelle Methode wie dies in C++ deklarieren:

virtual void myMethod() = 0; 

.. aber wie ich letzte Nacht nicht schlafen konnte, mein nerdy hea d kam zu denken, ob der "= 0" -Teil eine semantische Bedeutung hat, oder ob er "nur" da ist, um rein virtuelle Methoden deklarieren zu können.

Gibt es andere Orte, wo dieses Konstrukt verwendet wird?
(Und nein - int v = 0; zählt nicht: P)

+3

Duplizieren von [Warum wird die reine virtuelle Funktion mit 0 initialisiert?] (http://stackoverflow.com/questions/2156634/why-pure- virtuelle-Funktion-ist-ich nitialized-by-0) – ypnos

+1

Nice find. SO braucht wirklich eine bessere Suchfunktion (Oder ich muss es besser verwenden :)) – cwap

+0

Ich hätte es nicht gefunden, wenn es nicht schon in meinem Gedächtnis war. Brain Cache wurde noch nicht geleert. – ypnos

Antwort

0

Es bedeutet, dass die Methode rein virtuell ist. Also müssen die Subtypen es implementieren. Außerdem hat es hier nicht die Implementierung und die Klasse ist nicht instanziierbar.

3

Es ist eine virtuelle reine Methode.

Das bedeutet, dass:

  • wir bieten nicht die Implementierung (es gibt eine Möglichkeit, eine zu schaffen, aber es ist nicht sinnvoll)
  • sie das Kind Klasse implementieren diese Methode
  • wollen wir Diese Klasse kann nicht instanziiert werden: Nur eine vollständig implementierte untergeordnete Klasse kann
+0

Das OP wusste das schon. – jv42