分析程序实施过程
分析程序执行过程
帮忙解释 程序执行的流程 特别是析构的时候, 没想明白
------解决方案--------------------
参看帖子:
http://topic.****.net/u/20120930/10/36e2e1a0-260f-4999-a211-9e231650c0d1.html
------解决方案--------------------
1,析构函数的执行顺序是从派生类到基类的;
2,delete执行的时候是调用对象的析构函数的;
3,局部对象的析构发生在函数执行完毕返回时;
所以:
运行到system(“pause”)时,
只执行了aa对象的析构函数,
而还没有执行cc的析构函数。
- 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的析构函数。