為Base class宣告virtual的解構函式
class Base { public: Base(); ~Base(); ... }; class Derived : public Base { ... }; Base *getBase() { ... } void foo() { Base *base = getBase();
...
delete base; }
這段程式碼中,getBase()回傳一個指標,此指標可能指向一個Base物件或是Derived物件。假設今天base指向了一個Derived的物件,那麼後面的delete base可能會導致物件無法完全銷毀的問題。