大众信息网

c++ 中 为什么要将析构函数设置成虚函数?

答案:3  mip版
解决时间 2021-05-15 22:34
  • 提问者网友:西伯利亚狼
  • 2021-05-15 08:35
c++ 中 为什么要将析构函数设置成虚函数?
最佳答案
  • 二级知识专家网友:花落浅殇
  • 2021-05-15 09:12
写成虚的是为了在实现多态的时候不造成内存泄露, 比如:
class a
{
int aa;
public:
virtual ~a(){};
};
class b : public a
{
int bb;
};
如果你这样:
a *pa = new b; // upcast
然后这样:
delete pa;
这句delete, 如果你基类的析构函数不是虚的的话, 就会造成内存泄露, 具体表现为派生类的内存被释放了而基类没有.
全部回答
  • 1楼网友:妳旳笑魅惑了涐旳瞳
  • 2021-05-15 11:11
delete pa;如果不是虚函数的话,将调用定义pa时类型的析构函数,pa是a类型指针所以只会调用基类的析构,所以楼上的最后一句话正好相反“具体表现为派生类的内存被释放了而基类没有. ”
  • 2楼网友:往事叫我剪短发
  • 2021-05-15 10:44
有这回事?? 好久没编程了 忘了 不过好像没这事吧
我要举报
如以上问答内容为低俗/色情/暴力/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上问答信息
推荐资讯