Su suposición de que la función virtual pura no puede ser llamado es absolutamente incorrecto. Cuando una función se declara puramente virtual, simplemente significa que esta función no puede llamarse dinámicamente, a través de un mecanismo de despacho virtual. Sin embargo, esta misma función se puede llamar fácilmente estáticamente, sin despacho virtual.
En lenguaje C++, la llamada estática a una función virtual se realiza cuando se utiliza un nombre calificado de la función en la llamada, es decir, cuando el nombre de función especificado en la llamada tiene el formulario <class name>::<function name>
.
Por ejemplo
struct S {
virtual void foo() = 0;
};
void S::foo() {
// body for the pure virtual function `S::foo`
}
struct D : S {
void foo() {
S::foo(); // static call to `S::foo` from derived class
}
};
int main() {
D d;
d.S::foo(); // another static call to `S::foo`
}
posible duplicado de [función virtual pura con la aplicación] (http://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation) –
Lo sentimos! Soy algo nuevo en términos en estos foros. He aceptado las respuestas a lo que consideré correcto. gracias por las sugerencias – Vijay
duplicado posible de [función virtual pura con la aplicación] (https://stackoverflow.com/questions/2089083/pure-virtual-function-with-implementation) – finnw