若有以下程序: #include <iost ream> using namespace std; class A { private:int a; public:A(int i){ a=i;}void disp (){ cout<<a<<", ";} }; class B { private:int b; public:B(int j) { b=j; } void disp () { cout<<b<< ","; }; class C : public B,public A { private: int c; public: C(int k) :A(k-2),B(k+2) { c=k; } void disp() { A: :disp (); B::disp(); cout<<c<<end1; } }; int main () { C obj (10); obj.disp(); return 0; } 程序执行后的输出结果是
A.10,10,10
B.10,12,14
C.8,10,12
D.8,12,10
参考答案:D
解析: 本题考核派生类构造函数的使用。本题中,派生C具有多重继承关系,所以在派生类C的构造函数中应该包含基类A和B的成员初始化列表。而且派生类 C中的成员函数disp分别调用了基类A、B的公有成员函数disp()用于输出基类中私有数据变量初始化后的值。所以由类C构造函数的初始化形式可知,程序最后输出为8,12,10,即D选项。