有如下程序 #include using namespace std; class AA{ char c; public: AA(char ch):c(ch){ cout

admin2019-04-18  20

问题 有如下程序
     #include
     using namespace std;
     class AA{
           char c;
     public:
         AA(char ch):c(ch){ cout<     };
     class BB: public AA{
         AA m;
     public:
         BB(): m(’M’),AA(’C’){ cout<<"B"; }
     };
     int main(){
         BB bb;
         return 0;
     }
运行这个程序的输出是

选项 A、MCB
B、BMC
C、CMB
D、BCM

答案C

解析 派生类构造函数的工作过程:1、派生类的构造函数在执行函数体之前,首先调用基类的构造函数初始化基类;2、基类构造完成之后,在执行函数体之前根据声明次序初始化自己的成员;3、执行自身函数体。由上可知,构造函数初始化列表并不指定初始化的执行次序。所以程序中在创建BB对象时,首先调用AA的构造函数,输出"C",然后初始化类BB中的成员对象m,m是AA类对象,调用AA的构造函数,输出"M",最后执行函数体,输出"B";输出顺序为:"CMB",答案为C。
转载请注明原文地址:https://kaotiyun.com/show/IdAp777K
0

最新回复(0)