析构函数为虚函数的必要性
在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。
class Base {
Base(){}
~Base(){cout<<"Base::~Base()"<<endl;}
virtual void Work(){cout<<"Base::Work"<<endl;}
};
class Drive : public Base {
Drive(){}
~Drive(){cout<<"Drive::~Drive()"<<endl;}
virtual void Work(){cout<<"Drive::Work"<<endl;}
};
Base *pBase = new Drive();
pBase->Work();
delete pBase
输出:
Drive::Work
Base::~Base()
对象没有被完全delete。
如果在~Base()之前加上virtual ,输出
Drive::Work
Drive::~Drive()
Base::~Base()
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。