Je me suis toujours demandé pourquoi nous codions
virtual void MyFunction() = 0;
et pas
pure virtual void MyFunction();
Y a-t-il une référence sur la base de cette décision?
Je me suis toujours demandé pourquoi nous codions
virtual void MyFunction() = 0;
et pas
pure virtual void MyFunction();
Y a-t-il une référence sur la base de cette décision?
Réponses:
Tiré de La conception et l'évolution du C ++ - Bjarne Stroustrup - Addison-Wesley (ISBN 0-201-54330-3) - chapitre 13.2.3:
La curieuse
= 0syntaxe a été choisie plutôt que l'alternative évidente d'introduire un nouveau mot clépureouabstractparce qu'à l'époque je ne voyais aucune chance de faire accepter un nouveau mot clé. Si j'avais suggérépure, la version 2.0 aurait été livrée sans classes abstraites. Étant donné le choix entre une syntaxe plus agréable et des classes abstraites, j'ai choisi des classes abstraites. Plutôt que de risquer un retard et d'encourir certains combatspure, j'ai utilisé la tradition C et C ++ de l'utilisation de 0 pour ne pas y figurer .
Quoi qu'il en soit, regarder la norme C ++ (§ 9.2 - Membres de classe) = 0est appelé pur-spécificateur .
pureun mot-clé contextuel que vous mettez à la fin d'une définition de fonction, donc virtual void MyFunction() pureau lieu de = 0, pour aller avec finalet override.