2010-11-23 24 views
5

Possible en double:
Why pure virtual function is initialized by 0?Que signifie "= 0" en C++?

Salut à tous ..

Tout d'abord, je sais que vous déclarez une méthode virtuelle pure comme celui-ci en C++:

virtual void myMethod() = 0; 

.. mais comme je ne pouvais pas dormir la nuit dernière, mon nerdy hea d est venu à penser si la partie "= 0" a un sens sémantique, ou si c'est "juste" là pour pouvoir déclarer des méthodes purement virtuelles.

Y a-t-il d'autres endroits où cette construction est utilisée?
(Et non-int v = 0; ne compte pas: P)

+3

Dupliquer de [Pourquoi la fonction virtuelle pure est initialisée par 0?] (http://stackoverflow.com/questions/2156634/why-pure- fonction-virtuelle-is-i nitialized-by-0) – ypnos

+1

Belle trouvaille. SO a vraiment besoin d'une meilleure fonctionnalité de recherche (Ou je dois être mieux à l'utiliser :)) – cwap

+0

Je ne l'aurais pas trouvé si ce n'était pas déjà dans ma mémoire. Le cache cérébral n'a pas encore été vidé. – ypnos

Répondre

0

Cela signifie que la méthode est purement virtuelle. Ainsi, les sous-types doivent l'implémenter. En outre, il n'a pas l'implémentation ici et la classe n'est pas instanciable.

3

C'est une méthode purement virtuelle.

Cela signifie que:

  • nous ne fournissons pas la mise en œuvre (il existe un moyen de fournir une, mais ce n'est pas utile)
  • nous voulons la classe enfant à mettre en œuvre cette méthode
  • nous rendre cette classe impossible à instancier: seule une classe enfant entièrement implémentée peut être
+0

L'OP savait déjà cela. – jv42