读书人

分析程序实施过程

发布时间: 2012-10-23 12:12:22 作者: rapoo

分析程序执行过程

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.csdn.net/u/20120930/10/36e2e1a0-260f-4999-a211-9e231650c0d1.html
[解决办法]
1,析构函数的执行顺序是从派生类到基类的;
2,delete执行的时候是调用对象的析构函数的;
3,局部对象的析构发生在函数执行完毕返回时;
所以:
运行到system(“pause”)时,
只执行了aa对象的析构函数,
而还没有执行cc的析构函数。

读书人网 >C++

热点推荐