有如下程序: #include<iostream> using namespace std; class A{ public:  A(){cout<<"A";}   ~A(){cout<<"A";} }; cl

admin2012-01-20  42

问题 有如下程序:
   #include<iostream>
   using namespace std;
   class A{
   public:
    A(){cout<<"A";}
    ~A(){cout<<"A";}
   };
   class B{
    Aa;
   public:
    B(){cout<<"B";}
    ~B(){cout<<"B";}
   };
   int main(){
    B b;
    return 0:
   }
   程序的输出结果是______。

选项

答案ABBA

解析 此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)->执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序->执行自身的构造函数。析构顺序与之相反。此题中,B类没有基类。但是有一个A类的成员a。所以构造B类对象时,先构造成员a再构造自身。因此,构造时输出的结果是AB,析构与构造顺序相反会输出BA。所以程序最终输出结果是ABBA。
转载请注明原文地址:https://kaotiyun.com/show/3PVp777K
0

相关试题推荐
最新回复(0)