父類解構函式加virtual
阿新 • • 發佈:2019-01-05
- #include<iostream>
- usingnamespace std;
- class Base
- {
- public:
- Base(){}
- virtual ~Base(){} //基類的解構函式應該宣告為虛解構函式。
- virtualvoid Test(){cout<<"Base Test"<<endl;}
- };
- class Derived:public Base
- {
- public:
- Derived(){}
- ~Derived(){cout<<"delete Derived"<<endl;}
- void Test(){cout<<"Derived Test"<<endl;}
- };
- void main()
- {
- Base* pBase=new Derived(); //父類的指標指向派生類的物件。
- pBase->Test();
- delete pBase; //<span style="color:#ff0000;">如果沒有Base基類的解構函式沒有宣告為virtual,是不會執行到子類的解構函式的。</span>
- //所以將父類的解構函式宣告為虛擬函式,作用是用父類的指標刪除一個派生類物件時,派生類物件的解構函式會被呼叫。
- }