Mi pregunta probablemente será mejor explicada por un ejemplo.¿Llamar a una función anulada de una clase base?
Por ejemplo, tengo 2 clases: Una clase base y una clase derivada:
class baseClass
{
public:
baseClass()
{
foo();
}
virtual bool foo() { printf("baseClass"); return false;}
};
class derivedClass : public baseClass
{
public:
bool foo()
{
printf("derivedClass");
return true;
}
};
Cuando creo una instancia de derivedClass
, el constructor en baseClass
será llamado, y foo()
serán llamados de que es constructor. El problema es que el constructor baseClass está llamando a su propio foo()
y no a la foo()
reemplazada que la clase derivada ha anulado. ¿Hay alguna forma de hacer que la clase baseClass invoque la función anulada, no su propia definición de la función?
+1: Los constructores son especiales y trucos;; – James
¡Gracias por la respuesta! Me siento como un idiota ahora porque ya debería haberlo sabido. Gracias:] – Brad
Para formas de hacer que algo similar suceda, vea C++ FAQ Lite 23.6: http://www.parashift.com/c++faq-lite/strange-inheritance.html#faq-23.6 – aschepler