BaseClass * base = new DerivedClass();
delete base;
如果BaseClass基类的析构函数不是虚析构函数,那么在delete base只会调用基类的析构函数; 若派生类对象申请了内存资源,就会造成内存泄露;
基类的析构函数改为virtual虚析构函数,虚构函数会变为动态绑定,析构时会先调用派生类的析构函数,再执行基类析构函数;
BaseClass * base = new DerivedClass();
delete base;
如果BaseClass基类的析构函数不是虚析构函数,那么在delete base只会调用基类的析构函数; 若派生类对象申请了内存资源,就会造成内存泄露;
基类的析构函数改为virtual虚析构函数,虚构函数会变为动态绑定,析构时会先调用派生类的析构函数,再执行基类析构函数;