在C++中,为什么有时析构函数必须写为虚函数

 我来答
hostmanye
2017-04-08 · TA获得超过1057个赞
知道小有建树答主
回答量:511
采纳率:33%
帮助的人:201万
展开全部
当一个类要被继承的时候,就要写成虚函数

基类指针可以指向派生类的对象(多态性),如果删除该指针delete []p;就会调用该指针指向的派生类析构函数,而派生类的析构函数又自动调用基类的析构函数,这样整个派生类的对象完全被释放。
如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全。
所以,将析构函数声明为虚函数是十分必要的。
东风冷雪
2017-04-08 · TA获得超过3945个赞
知道大有可为答主
回答量:3910
采纳率:76%
帮助的人:992万
展开全部
析构函数必须写为虚函数
这个 还真是没有 在意, 估计是为了基类的继承吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mafangsan
2017-04-08 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2617万
展开全部
是为了保证通过基类的指针释放对象的时候能够调用到派生类的析构函数进行善后操作。
如果不用虚函数做不到的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式