La mia domanda verrà probabilmente spiegata meglio da un esempio.Chiamare una funzione sottoposta a override da una classe base?
Ad esempio, ho 2 classi: Una classe base e la classe derivata:
class baseClass
{
public:
baseClass()
{
foo();
}
virtual bool foo() { printf("baseClass"); return false;}
};
class derivedClass : public baseClass
{
public:
bool foo()
{
printf("derivedClass");
return true;
}
};
Quando creo un'istanza derivedClass
, il costruttore in baseClass
sarà chiamato, e foo()
chiamerò dalla sua costruttore. Il problema è che il costruttore di baseClass sta chiamando il proprio foo()
e non lo ha sostituito con lo foo()
che la classe derivata ha sovrascritto. Esiste comunque la possibilità che la baseClass chiami la funzione sovrascritta, non la sua definizione della funzione?
+1: i costruttori sono speciali e astuti;) – James
Grazie per la risposta! Mi sento un idiota ora perché avrei dovuto saperlo già. Grazie:] – Brad
di modi per fare qualcosa di simile accada, vedi C++ FAQ Lite 23.6: http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6 – aschepler