springboot欢迪迈手机商城设计与开发(11614)
2025/12/29 19:57:27
虚析构函数用于解决基类指针指向派生类对象时的资源释放问题。当基类析构函数声明为虚函数时,通过基类指针删除派生类对象会正确调用派生类的析构函数,避免内存泄漏。
在基类中声明析构函数为虚函数,派生类析构函数会自动成为虚函数(即使不显式写virtual)。语法示例:
class Base { public: virtual ~Base() { /* 基类析构逻辑 */ } }; class Derived : public Base { public: ~Derived() { /* 派生类析构逻辑 */ } };若基类析构函数非虚,通过基类指针删除派生类对象时,仅调用基类析构函数,导致派生类资源未释放。示例:
Base* obj = new Derived(); delete obj; // 若~Base()非虚,~Derived()不会被调用纯虚析构函数需提供实现(即使无实际逻辑),否则链接阶段会报错。常用于抽象基类:
class AbstractBase { public: virtual ~AbstractBase() = 0; }; AbstractBase::~AbstractBase() {} // 必须实现