Я пытаюсь выполнить то же самое, что описано в предыдущем вопросе:
вызов виртуальной функции из базового класса
Но, мой настоящий вопрос:
Что делать, если f() является конструктором в классе Base? Какой g() будет вызываться? Я не знаю, поступаю ли я неправильно, но в моей программе, похоже, все наоборот.
Принимая те же самые переменные из предыдущего вопроса, код, который показывает такие
поведение будет выглядеть так:
Class Base
{
Base(){g();};
virtual void g(){//Do some Base related code;}
};
Class Derived : public Base
{
Derived(){};
virtual void g(){//Do some Derived related code};
};
int main()
{
Derived newDerived;
return 0;
}
Update:
Тханкс к Навену.
Он предоставил мне страницу, содержащую всю соответствующую информацию об этой теме.
Я сообщу вам ссылку здесь:
parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6