2012-02-14 9 views
12

Duplicar posibles:
Why pure virtual function is initialized by 0?¿Qué significa "= 0"? Qué hacer al declarar funciones virtuales puras en C++?

Sé que, con el fin de declarar una función virtual pura es necesario utilizar "= 0;" sintaxis, así:

class Foo 
{ 
protected: 
    Foo(); 
    virtual int getValue() = 0; 
}; 

Mi pregunta es, ¿qué es exactamente (en el funcionamiento interno del compilador) hace el "= 0;" sintaxis hacer? ¿De verdad establece el puntero de función igual a cero? ¿Sirve como nada más que una declaración de intenciones, como la palabra reservada "abstracta" en Java y C#, y si es así, por qué no agregar una palabra reservada como "abstracta" al lenguaje en lugar de usar esa sintaxis arcana?

+0

Esta pregunta se responde [aquí] (http://stackoverflow.com/questions/2156634/why-pure-virtual-function-is-initialized-by-0). – Nerdtron

+6

Porque la palabra clave 'pure' sería demasiado legible para los programadores de C++. – orlp

+0

@nightcracker: Bjarne Stroustrup es cauteloso con las palabras clave contextuales (es decir, identificadores que son solo palabras clave en algunos contextos y no otros) y con razón porque hace el léxing un poco más difícil (es decir, no puede decir si un identificador particular es una palabra clave o no sin su contexto). No puedo culparlo por esto. Sin embargo, también es cauteloso con la introducción de palabras clave completas, y esto produce todos esos usos raros ('static' !!!!). –

Respuesta

0

Eso significa que no hay ninguna aplicación "default". Cualquier clase derivada necesita implementarlo.

+1

Tenga en cuenta que las funciones virtuales puras pueden tener implementación. – Griwes

0

Te obliga a definirlo en una clase infantil.

Cuestiones relacionadas