ClxBase *pTest = new ClxDerived; pTest->DoSomething(); delete pTest;
的輸出結果是: Do something in class ClxDerived! Output from the destructor of class ClxDerived! 這個很簡單,非常好理解。 但是,如果把類ClxBase析構函數前的virtual去掉,那輸出結果就是下面的樣子了: Do something in class ClxDerived! 也就是說,類ClxDerived的析構函數根本沒有被調用!一般情況下類的析構函數里面都是釋放內存資源,而析構函數不被調用的話就會造成內存泄漏。我想所有的C++程序員都知道這樣的危險性。當然,如果在析構函數中做了其他工作的話,那你的所有努力也都是白費力氣。