145 votes

Pourquoi une fonction virtuelle pure est-elle initialisée par 0 ?

Nous déclarons toujours une fonction virtuelle pure comme suit :

virtual void fun () = 0 ;

C'est-à-dire qu'elle est toujours affectée à 0.

Ce que je comprends, c'est qu'il s'agit d'initialiser l'entrée de la table virtuelle pour cette fonction à NULL et que toute autre valeur ici entraîne une erreur au moment de la compilation. Est-ce que cette compréhension est correcte ou non ?

1voto

Brian Points 14040

Vous pouvez également initialiser l'entrée de la table virtuelle pour qu'elle pointe vers une fonction réelle"

 virtual void fun()
 {
     //dostuff()
 }

Il semble intuitif que l'entrée de la table virtuelle puisse être définie de manière à ne pointer nulle part (0) ou vers une fonction. Le fait de vous laisser spécifier votre propre valeur pour cette entrée aurait probablement pour conséquence qu'elle pointerait vers de la merde au lieu d'une fonction. Mais c'est la raison pour laquelle "= 0" est autorisé et "= 1" ne l'est pas. Je soupçonne Neil Butterworth d'avoir raison quant à la raison pour laquelle "= 0" est utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X