为什么析构函数虚拟是必要的???
class base
{
public:
~base()
{
cout<<"base ~"<<endl;
}
};
class super:public base
{
public:
~super()
{
cout<<"super~"<<endl;
}
};
void test()
{
base* s=new super();
delete s;
}
析构函数没有设置为虚函数,输出:base~ 造成内存泄露
修改之后:
class base
{
public:
virtual ~base()
{
cout<<"base ~"<<endl;
}
};
class super:public base
{
public:
~super()
{
cout<<"super~"<<endl;
}
};
void test()
{
base* s=new super();
delete s;
}
输出: base~ super~