當Derived
類對象被創建時,首先調用Base
類構造函數。類對象Derived
包含Base
類對象。這允許它調用它的Base
函數。而Base
類對象不包含Derived
類對象
Base *b=new Derived();
在這裏你可以使用同一個函數來處理所有的派生類對象的情況下非常有用。
考慮,
父類:動物 派生類:狗,貓等
現在,你有一個函數
void doSomethingtoTheAnimal(//take Animal here);
如果不允許指定基地類對象轉換爲父引用變量。您將不得不爲Dog
,Cat
等創建單獨的功能。
void doSomethingtoTheAnimal(Cat *b) or void doSomethingtoTheAnimal(Dog *b)
然而,多態,你可以使用void doSomethingtoTheAnimal(Base *b);
然後,你可以做
Base *b1 = new Dog()
或Base *b2 = new Cat();
,並使用相同的功能doSomethingtoTheAnimal(b1)
或doSomethingtoTheAnimal(b2)
此外,指着當基類指針到派生類對象只能調用父類中的函數或在子類中重寫。它不知道子類中專門定義的函數
關鍵字:多態性。 – chris 2013-04-08 12:52:00
,因爲'派生'是'基',但不是相反。 – 2013-04-08 12:53:09
@chris&Oli Charlesworth:我站好了。評論刪除不要混淆人。 – lapk 2013-04-08 13:10:55