问题 单项选择题

有如下程序: #include <iostream.h> using namespace std; class Base { public: Base(){ cout<<"BB"; f(); } voidf(){cout <<"Bf"; } }; class Derived: public Base { public: Derived (){cout<<"DD";} void f(){cout<<"Df";} }; int main(){Derived d; return 0;} 执行上面的程序将输出

A.BBBfDD

B.BBDfDDDf

C.DD

D.DDBBBf

答案

参考答案:A

解析: 本题考核类的继承与派生知识。派生类构造函数执行的一般次序如下:首先调用基类构造函数,调用顺序按照它们被继承时说明的顺序。然后调用子对象的构造函数,调用顺序按照它们在类中的说明顺序。最后是派生类构造函数中的内容。题中定义派生类对象d时,先调用基类Base的构造函数输出BBBf(注意:基类Base构造函数中调用的函数f()是基类中的实现,而不是派生类中的实现),然后调用派生类Derived的构造函数输出DD。

单项选择题
单项选择题 A型题