C++中基类的析构函数为什么用virtual虚析构函数
C++中基类采用virtual虚析构函数是为了防止内存泄露的。 具体来说,如果派生类申请了内存空间,并在其析构函数中对该内存空间进行释放,如果基类采用的非虚析构函数,则删除基类指针指向的派生类对象时,就不会触发动态绑定,因此,只会调用基类的虚构函数,而不会调用该派生类的析构函数。因此,在这种情况下,派生类中申请的空间就得不到释放从而产生内存泄漏。为了防止该情况的发生,C++中基类的析构函数应该采用virtual虚析构函数。 关于动态绑定,简单来说,虚函数是动态绑定的基础,动态绑定是实现运行多态的基础,需要触发动态绑定,需要满足以下两个条件: 只有虚函数才能进行动态绑定,非虚函数不能进行动态绑定。 必须通过基类的引用或指针进行函数的调用。 通过基类指针或基类引用做形参,当实参传入不同的派生类(或基类)的指针或引用,在函数内部触发动态绑定,从而来运行时实现多态的。 示例代码讲解 using namespace std ; class Base { public : ~ Base ( ) { cout << "~Base()" << endl ; } } ; class Derived1 : public Base { public : Derived1 ( ) : name_ ( new string ( "NULL" ) ) { } Derived1 ( const string &