Mi sono sempre chiesto perché codifichiamo
virtual void MyFunction() = 0;
e non
pure virtual void MyFunction();
C'è un riferimento per la base di questa decisione?
Mi sono sempre chiesto perché codifichiamo
virtual void MyFunction() = 0;
e non
pure virtual void MyFunction();
C'è un riferimento per la base di questa decisione?
Risposte:
Da The Design and Evolution of C ++ - Bjarne Stroustrup - Addison-Wesley (ISBN 0-201-54330-3) - capitolo 13.2.3:
La curiosa
= 0
sintassi è stata scelta rispetto all'ovvia alternativa dell'introduzione di una nuova parola chiavepure
oabstract
perché al momento non vedevo alcuna possibilità di ottenere una nuova parola chiave accettata. Se avessi suggeritopure
, la versione 2.0 sarebbe stata spedita senza classi astratte. Con una scelta tra una sintassi migliore e le classi astratte, ho scelto le classi astratte. Piuttosto che rischiare il ritardo e incorrere in alcuni scontripure
, ho usato la tradizionale convenzione C e C ++ di usare 0 per rappresentare non lì .
Comunque, guardare lo standard C ++ (§ 9.2 - Membri della classe) = 0
è chiamato puro-specificatore .
pure
una parola chiave contestuale che hai inserito alla fine della definizione di una funzione, quindi al virtual void MyFunction() pure
posto di = 0
, andare insieme a final
e override
.