Eventuali duplicati:
Why pure virtual function is initialized by 0?Cosa significa "= 0;" fare quando si dichiarano funzioni virtuali pure in C++?
so che, al fine di dichiarare una funzione virtuale pura è necessario utilizzare "= 0;" sintassi, in questo modo:
class Foo
{
protected:
Foo();
virtual int getValue() = 0;
};
La mia domanda è, che cosa esattamente (in funzionamento interno del compilatore) fa il "= 0;" sintassi fare? In realtà ha impostato il puntatore della funzione uguale a zero? Serve solo come una dichiarazione di intenti, come la parola riservata "astratta" in Java e C#, e in tal caso, perché non aggiungere una parola riservata come "astratto" al linguaggio piuttosto che usare una sintassi arcana?
Questa domanda ha risposta [qui] (http://stackoverflow.com/questions/2156634/why-pure-virtual-function-is-initialized-by-0). – Nerdtron
Poiché la parola chiave 'pure' sarebbe troppo leggibile per i programmatori C++. – orlp
@nightcracker: Bjarne Stroustrup è diffidente nei confronti delle parole chiave contestuali (cioè identificatori che sono solo parole chiave in alcuni contesti e non in altri) e giustamente perché rende lexing un po 'più difficile (ovvero non si può dire se un determinato identificatore è una parola chiave o non senza il suo contesto). Non posso biasimarlo per questo. Tuttavia è anche cauto nell'introdurre parole chiave complete, e questo produce tutti quegli strani usi ('static' !!!!). –