2024/6/29
问题引出(消失的子类析构函数)
父类指针指向子类对象,当父类指针在析构时候,不会调用子类中析构函数,导致子类如果有堆区属性,会出现内存泄漏。如下图
使用虚析构函数解决
把父类中的析构函数定义为虚析构函数,即析构函数加上virtual关键字。当父类调用虚析构函数时,父类就会进行“动态析构”,如果子类需要调用析构函数,就会先调用子类的析构函数,再调用父类的析构函数,如果子类不需要调用析构函数,那么就直接调用父类的析构函数。
2024/6/29
父类指针指向子类对象,当父类指针在析构时候,不会调用子类中析构函数,导致子类如果有堆区属性,会出现内存泄漏。如下图
把父类中的析构函数定义为虚析构函数,即析构函数加上virtual关键字。当父类调用虚析构函数时,父类就会进行“动态析构”,如果子类需要调用析构函数,就会先调用子类的析构函数,再调用父类的析构函数,如果子类不需要调用析构函数,那么就直接调用父类的析构函数。