全文如下:
Destructor should be virtual according to MSJ article in Sept 1992
"Do More with Less Code:..."哪位能够找到该文全文?谢谢!

解决方案 »

  1.   

    对不同的继承的子类调用不同的析构函数。
    例如:
    class A
    {
       char* m_c;
       A(){ m_c = new char[10];}
       virtual ~A(){ delete[] m_c;}
    }class AA : public A
    {
       char* m_c1;
       AA(){ m_c1 = new char[20];}
       virtual ~AA(){ A::~A(); delete[] m_c1}
    }
      

  2.   

    例如:
    struct A 
    {
    int *q;
    A() { q = new int ;}
    virtual ~A() {printf("~A\n");} 
    virtual func() {printf("A::func()\n");}
    };
    struct B : public A
    {
    int *p;
    B() { p = new int ; }
    virtual ~B() { printf("~B\n"); delete p; }
    virtual func() {printf("B::func()\n");}
    } ;
    int main()
    {
    A *pA = new B ;
    delete pA ;//先调用~B(),再调用~A()
    }
      

  3.   

    如果确信你的CLASS绝对不会被继承,可以去掉VIRTUAL。
      

  4.   

    http://blog.csdn.net/jiangsheng/archive/2005/01/24/265475.aspx
      

  5.   

    google一把
    可能是thinking in c++里面的吧