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
= 0
syntaxe a été choisie plutôt que l'alternative évidente d'introduire un nouveau mot clépure
ouabstract
parce 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) = 0
est appelé pur-spécificateur .
pure
un mot-clé contextuel que vous mettez à la fin d'une définition de fonction, donc virtual void MyFunction() pure
au lieu de = 0
, pour aller avec final
et override
.