[C++ Daily] 虚继承与虚析构带来的变化
虚继承
在菱形继承中,若 Student 和 Teacher 继承于 Person, TS 继承于 Student 和 Teacher,则构造 TS 时会调用两次 Person 的 Construct 和 Destruct 函数,若为虚继承,则不会出现上述问题(此类问题主要解决继承带来的多次非法delete)
原继承:
结果:
虚继承:
结果:
虚析构
父类指针开辟子类指针堆空间时无法调用子类析构函数从而发生内存泄露的问题
原泄露代码:
结果:
造成内存泄漏
虚析构改进:
结果: