由于多态的存在,而多态分为两种方式,第一种是基类指针指向子类堆区内存,第二种是基类引用指向子类对象,而父类不写成虚析构的话第一种就会出现以下问题(第二种子类析构仍然会被调用):
释放掉基类指向的子类内存,并销毁父类指针时只会调用基类的析构函数,而不会调用子类的析构函数从而造成内存泄漏。
而基类写成虚析构的时候先调用父类的构造函数然后调用子类的构造函数,然后调用子类的析构函数然后调用基类的析构函数。
2023-09-17