有如下程序: #include using namespace std; class AA{ public: AA(int n){ cout

admin2015-07-22  21

问题 有如下程序:
     #include
     using namespace std;
     class AA{ public: AA(int n){ cout<     class BB{ public: BB(int n){ cout<     class CC{
         AA a;
         BB b;     
     public:
         CC(int n1=1,int n2=2,int n3=3):b(n2),a(n1){ cout<     };
     int main(){
         CC c;
         return 0;
     }
运行这个程序的输出结果是

选项 A、321
B、231
C、213
D、123

答案D

解析 构造函数初始化列表仅指定用于初始化成员的值,并不指定这些初始化执行的次序;初始化执行的次序是根据类定义中成员的声明顺序完成的,初始化列表结束后,再执行函数体;程序创建CC对象c,调用CC的构造函数,由于在类CC中,AA类对象a首先声明,所以先调用AA类的构造函数,完成成员a的初始化,输出"1",再调用BB类的构造函数,完成成员b的初始化,输出"2",最后执行CC构造函数的函数体,输出"3";答案为D。
转载请注明原文地址:https://jikaoti.com/ti/bcE0FFFM
0

最新回复(0)