#include <iostream>
using namespace std;
class based{
public:
based(){
}
~based(){
cout<<"flag 1"<<endl;
}
virtual void f(){
cout<<"ok1"<<endl;
}
};
class derived:public based{
public:
~derived(){
cout<<"flag 2"<<endl;
}
void f(){
cout<<"ok2"<<endl;
}
};
int main(){
based* p = new derived();
p->f();
delete p;
}
输出结果:
ok2
flag 1
指向基类的指针,delete p;只调用基类的析构函数,没有调用派生类的析构函数。