分析程序实施过程

分析程序执行过程
C/C++ code

class Base 
{
public:
    int m_a;
    Base (int a = 2) : m_a(a) {}
    virtual ~Base() {printf( " A %d", m_a);}
};
class Derived : public Base 
{
public:
    Derived (int a =4) : Base (a) {}
    virtual ~ Derived () {printf( "B %d", m_a);}
};

int main()
{
    Base *aa, bb;
    Derived cc(3);
    aa = new Derived;
    delete aa;
    system( "pause");
    return 0;
}



帮忙解释 程序执行的流程 特别是析构的时候, 没想明白

------解决方案--------------------
参看帖子:
http://topic.****.net/u/20120930/10/36e2e1a0-260f-4999-a211-9e231650c0d1.html
------解决方案--------------------
1,析构函数的执行顺序是从派生类到基类的;
2,delete执行的时候是调用对象的析构函数的;
3,局部对象的析构发生在函数执行完毕返回时;
所以:
运行到system(“pause”)时,
只执行了aa对象的析构函数,
而还没有执行cc的析构函数。