虚析构函数的作用?

虚析构函数在C++中的主要作用是用于解决基类指针指向派生类对象,并且通过基类指针删除对象时可能导致的内存泄漏问题。

当使用基类指针指向派生类对象,然后尝试删除该对象时,如果基类的析构函数不是虚的,只会调用基类的析构函数,而不会调用派生类的析构函数。

这可能导致派生类对象中的资源没有得到正确释放,从而产生内存泄漏。

图片[1]-虚析构函数的作用?-不念博客

通过将基类的析构函数声明为虚函数,就能够在基类指针指向派生类对象时正确地调用派生类的析构函数,确保对象的资源得到正确释放。

给个例子:

#include <iostream>

class Base {
public:
    Base() {
        std::cout << "Base constructor" << std::endl;
    }

    virtual ~Base() {
        std::cout << "Base destructor" << std::endl;
    }
};

class Derived : public Base {
public:
    Derived() {
        std::cout << "Derived constructor" << std::endl;
    }

    ~Derived() {
        std::cout << "Derived destructor" << std::endl;
    }
};

int main() {
    Base* obj = new Derived();
    delete obj;  // 正确释放资源,输出Derived destructor,然后输出Base destructor

    return 0;
}
© 版权声明
THE END
喜欢就支持一下吧
点赞67赞赏 分享
评论 抢沙发
头像
欢迎光临不念博客,留下您的想法和建议,祝您有愉快的一天~
提交
头像

昵称

取消
昵称

    暂无评论内容