虚析构函数:基类指针指向子类对象,用基类指针删除子类对象
纯虚析构函数:需要类内声明,类外实现,含之抽象类,不可实例化
C++默认的析构函数不是虚函数?析构函数必须是虚函数?
C++默认的析构函数不是虚函数目的:节省内存
虚函数需要额外的虚函数表和虚表指针,占用额外的内存。对于不会被继承的类来说,将析构设置成虚函数会浪费内存。只有需要当作父类时,设置成虚函数
析构函数必须是虚函数:防止内存泄漏
当一个类作为父类,需要被继承,才把它的析构函数设置为虚函数,
子类有开辟到堆区的属性,父类指针走不到子类的析构函数,就无法释放它
父类指针无法释放子类对象,需要虚析构,解决子类析构调不到的问题
ps 纯虚析构也可以,但含纯虚函数,此类属于抽象类,无法实例化