问题 单项选择题

若有以下程序: #include <iostream> using namespaces std; class A { public:A (){}A (int i){ x1=i;}void dispa(){ cout<<"xl="<<xl<<" , ";} private:int x1; }; class B : public A { public:B (){}B (int i):A(i+10){ x2=i;}void dispb(){ dispa (); cout <<"x2="<<x2<<end1;} private:int x2; }; int main () {B b(2);b.dispb ():return 0; }  程序运行后的输出结果是( )。

A.x1=10,x2=2

B.x1=12,x2=10

C.x1=12,x2=2

D.x1=2,x2=2

答案

参考答案:C

解析: 本题考核派生类的构造函数。在C++中,构造函数不能被继承,因此,派生类的构造函数必须通过调用基类的构造函数宋初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数,使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。 本题中,在派生类B的构造函数中,调用基类A的构造函数对基类A的数据成员 x1进行了初始化。

单项选择题 B1型题
多项选择题