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

上面程序的结果是多少?如何分析的 多谢!

2012-10-18 
下面程序的结果是多少?怎么分析的谢谢!!!!C/C++ codeclass Base{public:int m_aBase(int a 2):m_a(a){p

下面程序的结果是多少?怎么分析的 谢谢!!!!

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;}//记住:构造是先从父类开始构造,再到子类,析构以相反的方向析构! 

热点排行