A-A+

若有以下程序: #include <iostream> using namespaces s

2022-08-05 23:56:32 问答库 阅读 173 次

问题详情

若有以下程序: #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进行了初始化。

考点:程序