问题 单项选择题

有如下程序: #include<iostream> using namespace std; class A{ public:A(){cout<<"A";} }; classB{public:B().{cout<<"B";}} classC:public A{B b; public:C(){cout<<"C";} }; int main(){ C obj; return 0;} 执行后的输出结果是

A.CBA

B.BAC

C.ACB

D.ABC

答案

参考答案:D

解析: 本题考核类的继承与派生。派生类构造函数执行的一般次序如下:首先调用基类构造函数,调用顺序按照它们被继承时说明的顺序。然后调用子对象的构造函数,调用顺序按照它们在类中的说明顺序。最后是派生类构造函数中的内容。题中,类A是基类,类C是基类A的派生类,类B的对象b是类C的私有成员。所以最后的输出为ABC。

选择题
多项选择题