首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

分析程序实施过程

2012-10-23 
分析程序执行过程C/C++ codeclass Base {public:int m_aBase (int a 2) : m_a(a) {}virtual ~Base() {p

分析程序执行过程

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的析构函数。

热点排行