07 为多态基类声明virtual析构函数
总结:
问题:
当析构函数未被声明为virtual时,用基类指针删除子类对象时,可能子类成分未被销毁,而其析构函数也未被执行,但基类成分被执行,造成局部销毁问题,会形成资源泄漏、败坏数据结构等问题
解决办法:
给基类加virtual析构函数,(针对多态的基类,其他基类没有必要)
Virtual: https://blog.youkuaiyun.com/u010802169/article/details/88537490
注意:
1、基类虚构函数一般声明为virtual
2、但是其他类不要轻易声明为virtual,因为声明为virtual,会增加额外的空间消耗,且在程序迁移到其他语言时可能因为空间消耗问题遇到阻碍。即不可移植性。
3、string、STL标准容器等各种带有non-virtual析构函数也会导致上述问题
技巧:
当类内含有至少一个virtual函数时,才将其声明为virtual析构函数
创建抽象类,声明纯虚函数,必须有定义,否则连接器报错
析构函数执行顺序:先子类,再基类