虚析构函数
直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。 具体地说, 如果派生类中申请了内存空间 ,并在其 析构函数中 对这些内存空间进行 释放 。假设 基类 中采用的是 非虚析构函数 ,当delete 基类指针指向的派生类对象时 就不会触发 动态绑定 ,因而 只会调用基类的析构函数 ,而 不会调用派生类的析构函数 。那么在这种情况下, 派生类中申请的空间就得不到释放从而产生内存泄漏 。如果基类中析构函数声明为虚函数,则delete基类指针指向的派生类对象时通过动态绑定能够调用派生类的虚构函数,先执行派生类析构函数的函数体,再执行基类析构函数的函数体。所以,为了防止这种情况的发生,C++中基类的析构函数应采用virtual虚析构函数。 示例 基类析构函数未声明虚函数 #include <iostream> using namespace std; class Base { public: ~Base(){cout<<"~Base()"<<endl;} }; class Derived:public Base { public: virtual ~Derived(){cout<<"~Derived()"<<endl;} }; void test() { Base* b=new Derived(); delete b; cin.get(); } 输出