ewrewqr2 2015年10月20日
析构函数已经是虚函数了,为什么还会调用基类的析构函数?

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呢? 我对于虚析构函数的理解不对?
...全文
122 点赞 收藏 3
写回复
3 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告