請看下面的例子:學習C++:多態性與切片
#include <iostream>
using namespace std;
class Animal
{
public:
virtual void makeSound() {cout << "rawr" << endl;}
};
class Dog : public Animal
{
public:
virtual void makeSound() {cout << "bark" << endl;}
};
int main()
{
Animal animal;
animal.makeSound();
Dog dog;
dog.makeSound();
Animal badDog = Dog();
badDog.makeSound();
Animal* goodDog = new Dog();
goodDog->makeSound();
}
輸出是:
rawr
bark
rawr
bark
但我認爲肯定是輸出應該是 「RAWR樹皮樹皮樹皮」。 badDog有什麼用?
更新:你可能會感興趣於another question of mine。
我認爲你的變量有一些命名錯誤。 – aioobe 2010-12-09 22:24:18
代碼甚至沒有按原樣編譯。和`void main()`??? Ew ... – 2010-12-09 22:24:25
我不明白爲什麼有人會低估這個問題 - 它既不「不清楚」也不「有用」。 +1來否定downvote。 – casablanca 2010-12-09 22:27:59