上面程序的结果是多少?如何分析的 多谢!
下面程序的结果是多少?怎么分析的 谢谢!!!!
------解决方案--------------------
对不起,还漏了一个,最后在退出main()函数时(退回到startup code),此时局部对象bb超出作用域范围,所以发生析够,所以结果应该还增加一项: B 2.即最终结果为:
A 2A 4C 4D 4B 4B 2
------解决方案--------------------
- C/C++ code
class Base{ public: int m_a; Base(int a = 2):m_a(a){printf("A %d",m_a);} virtual ~Base() {printf("B %d",m_a);} }; class Derived : public Base { public: Derived (int a = 4):Base(a){printf("C %d",m_a);} ~Dwrived (){printf("D %d",m_a);} }; int main() { Base *aa,bb; aa =new Derived; delete aa; return 0; }
------解决方案--------------------
对不起,还漏了一个,最后在退出main()函数时(退回到startup code),此时局部对象bb超出作用域范围,所以发生析够,所以结果应该还增加一项: B 2.即最终结果为:
A 2A 4C 4D 4B 4B 2
------解决方案--------------------
- C/C++ code
class Base{ public: int m_a; Base(int a = 2):m_a(a){printf("A %d",m_a);} virtual ~Base() {printf("B %d",m_a);} }; class Derived : public Base { public: Derived (int a = 4):Base(a){printf("C %d",m_a);} ~Derived (){printf("D %d",m_a);} }; int main() { Base *aa,bb; aa =new Derived; delete aa; return 0; } //记住:构造是先从父类开始构造,再到子类,析构以相反的方向析构!