问题
单项选择题
若有以下程序: #include<iostream> using namespaces std; class A { public:A(){}A(int i){ xl=i;}void dispa(){ cout<<"x1="<<x1<<",";} private: int x1; }; class B:public A { public:B(){}B(int i):A(i+10){ x2=i;}void dispb(){ dispa(); cout<<"x2="<<x2<<endl;} 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++中,构造函数不能被继承,因此,派生类的构造函数必须通过调用基类的构造函数来初始化基类子对象。所以,在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类构造函数使基类的数据成员得以初始化。如果派生类中还有子对象,还应包含对子对象初始化的构造函数。