C++的虚析构函数有什么用_防止C++多态基类指针内存泄漏的关键

admin 百科 14
虚析构函数确保派生类析构函数被正确调用,防止资源泄漏;若基类析构函数非虚,通过基类指针删除派生类对象时仅调用基类析构函数,导致派生类资源未释放。

C++的虚析构函数有什么用_防止C++多态基类指针内存泄漏的关键-第1张图片-佛山资讯网

在C++中,当使用多态(即通过基类指针操作派生类对象)时,如果基类没有将析构函数声明为虚函数,可能会导致内存泄漏或资源未正确释放。这就是为什么虚析构函数如此关键的原因。

为什么需要虚析构函数

当通过基类指针删除一个派生类对象时,如果基类的析构函数不是虚函数,那么只有基类的析构函数会被调用,而派生类的析构函数不会执行。这会导致派生类中分配的资源(如动态内存、文件句柄等)无法被释放,从而造成内存泄漏。

举个例子:

class Base {
public:
    ~Base() { 
        // 只有这个析构函数被调用
        std::cout << "Base destroyed\n"; 
    }
};
<p>class Derived : public Base {
int* data;
public:
Derived() { data = new int[100]; }
~Derived() { 
delete[] data;  // 这个不会被调用!
std::cout << "Derived destroyed\n"; 
}
};</p>

登录后复制

立即学习“C++免费学习笔记(深入)”;

标签: c++ 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~