請考慮以下源代碼。我有兩節課CBar和CFoo。 CFoo繼承自CBar。此源代碼的輸出是面向對象的基本繼承
Bar
Foo
Bar
我期待
Bar
Foo
Foo
我有什麼錯? 我在想,因爲CFoo對象有一個覆蓋CBar講話功能的Speak函數。當我從CFoo對象的CBar函數調用Speak()函數時,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;
}
謝謝,我知道這將是簡單的事情。 – 2010-07-22 18:03:30