Maison >développement back-end >C++ >Pourquoi les fonctions virtuelles pures sont-elles initialisées avec « 0 » ?

Pourquoi les fonctions virtuelles pures sont-elles initialisées avec « 0 » ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 14:32:09191parcourir

Why are Pure Virtual Functions Initialized with `0`?

Comprendre l'initialisation des fonctions virtuelles pures avec '0'

Lors de la déclaration de fonctions virtuelles pures, vous remarquerez peut-être qu'elles sont toujours affectées à la valeur 0 :

virtual void fun() = 0;

Cette pratique pose la question de savoir pourquoi les fonctions virtuelles pures sont initialisées avec 0.

L'hypothèse incorrecte

Au départ, vous auriez peut-être cru que la valeur 0 est attribuée à des fonctions virtuelles pures pour définir l'entrée de la table virtuelle correspondante sur NULL. Cependant, cette hypothèse est incorrecte. La valeur attribuée à une fonction virtuelle pure ne définit pas nécessairement l'entrée de la table virtuelle sur NULL.

La vraie raison de '0'

L'utilisation de la syntaxe =0 pour les fonctions virtuelles pures remonte aux premiers travaux de Bjarne Stroustrup sur C . Plutôt que d'introduire un nouveau mot-clé comme « pure », il a choisi la syntaxe =0 parce qu'il pensait qu'elle avait de meilleures chances d'être acceptée par la communauté C à cette époque.

Comme Stroustrup lui-même le déclare dans son livre : "La conception et l'évolution de C", la syntaxe =0 n'était pas destinée à définir l'entrée de la table virtuelle sur NULL. De plus, définir l'entrée vtable sur NULL n'est pas une stratégie d'implémentation idéale pour les fonctions virtuelles pures.

Conclusion

L'initialisation des fonctions virtuelles pures avec 0 n'est pas liée à définir l'entrée de la table virtuelle sur NULL. Au lieu de cela, la syntaxe =0 a été choisie uniquement pour des raisons de lisibilité et de compatibilité dès les premiers stades du développement C.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn