虚析构函数

虚析构函数

      自动调用基类部分的西沟函数对基类的设计有重要影响。

      删除指向动态分配对象的指针时,需要运行西沟函数在释放对象的内存之前清楚对象。处理继承层次中的对象时,指针的静态类型可能与被删除对象的动态类型不同,可能会删除实际指向派生类对象的基类类型指针。
     
      如果删除基类指针,则需要运行积累西沟函数并清楚基类成员,如果对象实际是派生类型的,则没有定义该行为。要保证运行适当的析构函数,基类中的析构函数必须为虚函数:
Code
class item_base
{
public:
    
// no work, but virtual destructor needed
    
// if base pointer that points to a derived object is ever deleted
    virtual ~item_base() {}
};

item_base 
*itemP = new item_base;        // same static and dynamic type
delete itemP;                            // ok: destructor for item_base called
itemP = new Bulk_item;                    // ok: static and dynamic types differ
delete itemP;                            //

你可能感兴趣的:(虚析构函数)