Рассмотрим следующий исходный код. У меня есть два класса CBar и CFoo. CFoo наследуется от CBar. Вывод этого исходного кода
Bar
Foo
Bar
Я ожидал
Bar
Foo
Foo
Где я ошибся?
Я думал о том, что поскольку объект CFoo имеет функцию Speak, которая переопределяет функцию разговора CBar. Когда я вызываю функцию Speak () из функции CBar для объекта CFoo, функция CFoo Speak выполняется. Но это предположение кажется неправильным.
class CBar
{
public:
void Speak() {
printf(" Bar \n");
}
void DoStuff() {
this->Speak();
}
};
class Cfoo : public CBar
{
public:
void Speak() {
printf(" Foo \n");
}
void DoStuff() {
CBar::DoStuff();
}
};
int _tmain(int argc, _TCHAR* argv[])
{
CBar b;
b.Speak();
Cfoo f;
f.Speak();
f.DoStuff();
return 0;
}