Мой вопрос, вероятно, лучше всего объясняется примером.Вызов переопределенной функции из базового класса?
К примеру, у меня есть 2 классов: базовый класс и производный класс:
class baseClass
{
public:
baseClass()
{
foo();
}
virtual bool foo() { printf("baseClass"); return false;}
};
class derivedClass : public baseClass
{
public:
bool foo()
{
printf("derivedClass");
return true;
}
};
Когда я создаю экземпляр derivedClass
, конструктор в baseClass
будет называться, и foo()
будет вызываться из его конструктор. Проблема в том, что конструктор baseClass вызывает свой собственный foo()
и не переопределенный foo()
, который переопределил производный класс. В любом случае, чтобы baseClass вызывал переопределенную функцию, а не ее собственное определение функции?
+1: Конструкторы являются особенными и сложными;) – James
Спасибо за ответ! Теперь я чувствую себя идиотом, потому что я должен был это знать уже. Спасибо:] – Brad
Для того, чтобы сделать что-то подобное, см. C++ FAQ Lite 23.6: http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6 – aschepler