Father *a = new Son(); // 基類指針指向派生對象
Son *b = new Son();
Father *a = b; // 派生類指針隱式轉換為基類指針
這是 C++ 多態的基石:基類類型具有更廣泛的通用性,可統一管理派生類對象集合。
std::vector<Base*> 存放各派生類指針,統一調用虛函數。Base* create(int type) 根據參數返回不同派生實例,調用者無需知悉具體類型。virtual 函數實現動態綁定。virtual,否則 delete base_ptr 導致派生部分資源洩漏。Father a = *b; // 對象切片!僅拷貝基類部分,失去派生特性
值傳遞會觸發切片,務必使用指針或引用保持多態性。