司二
2021-06-19 10:51
采纳率: 88.2%
浏览 21

关于虚函数的调用问题

为什么定义析构函数为虚函数的时候,用基类指针指向派生类对象,在析构的时候,会先调用派生类的析构函数,然后派生类自动调用基类的析构函数

但是将普通的基类成员函数定义为虚函数,派生类调用该函数后,不会自动调用基类的该函数?

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • robot8me 2021-06-19 12:12
    已采纳

    “但是将普通的基类成员函数定义为虚函数,派生类调用该函数后,不会自动调用基类的该函数?”如果派生类调用该函数后自动调用基类的该函数,那多态的意义就没有。析构函数先调用派生类再调用基类,这个具体原理我不清楚,可能是C++标准规范里设计如此。这样可以防止内存泄漏,如果析构函数指调用了派生类的,基类的没有调用,那基类里面定义的一些对象可能会没有释放。一般析构函数是用来释放内存或者资源的。

    已采纳该答案
    打赏 评论

相关推荐 更多相似问题