Pourquoi est une fonction virtuelle pure initialisée à 0?

Nous avons toujours déclarer une fonction virtuelle pure comme:

virtual void fun () = 0 ;

I. e., elle est toujours attribuée à 0.

Ce que je comprends, c'est que c'est pour initialiser la vtable entrée pour que cette fonction NULLE et toute autre valeur ici les résultats dans une erreur de compilation. Est-ce une compréhension correcte ou pas?

  • Notez que vtable n'est pas une exigence de la langue, mais juste une option de mise en œuvre de méthodes virtuelles. Un compilateur pourrait créer le même abstraction avec des différents la mise en œuvre (qui est, sans vtable, et sans aucun élément de y 0)
  • Re votre question supplémentaire - c'est ce que ma réponse (et plusieurs autres) dit.
  • Juste curieux de savoir ce qui se passe si je donne, virtual void func() = 100;
InformationsquelleAutor mukeshkumar | 2010-01-28