析构函数已经是虚函数了,为什么还会调用基类的析构函数?
struct B{
virtual ~B(){cout<<"B dtor"<<endl;}
};
struct D:B{
~D(){cout<<"D dtor"<<endl;}
};
int main(){
B* pb=new D();
delete pb;
return 0;
}我期待的结果是,既然D的析构已经是虚函数了,那么delete pb的时候,就只调用~D就可以了。
但是实际上输出的结果是
D dtor
B dtor
为什么还会调用B dtor呢? 我对于虚析构函数的理解不对?
...全文


