司二 2021-06-19 10:51 采纳率: 80.8%
浏览 42
已采纳

关于虚函数的调用问题

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

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

  • 写回答

1条回答 默认 最新

  • robot8me 2021-06-19 12:12
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?