问题 单项选择题

若有以下程序:
#include <iostream>
using namespace std;
class A

private:
int a;
public:
void seta(int x)

a=x;

void showa,( )

cout<<a<<", ";

;
class B

private:
int b;
public:
void setb(int x)

b=x;

void showb ()

cout<<b<<", ";

;
class C : public A, private B

private:
int c;
public:
void setc(int x,int y, int z)

c=z;
sera (x);
seth (y);

void showc()

showa();
showb();
cout<<c<<end1;

;
int main ()

C c;
c.setc(1,2,3);
c.showc();
return 0;

程序执行后的输出结果是( )。

A.1,2,3

B.1,1,1

C.2,2,2

D.3,3,3

答案

参考答案:A

解析: 本题考核派生类的应用。本题中类A和类B都是基类。而类C从类A公有派生,从类B处私有派生。所以类C中的函数成员可以访问类A和类B中的公有成员。
在类C的函数成员setc()中,调用基类A的函数成员seta()对A的数据成员a赋值,还调用了基类B的函数成员setb()对类B的数据成员b赋值,然后对类C自己的数据成员c赋值。
在类C的函数成员showc()中,调用基类A的函数成员showa()显示数据成员a的值,还调用基类B的函数成员showb()显示数据成员b的值,然后输出类C自己的数据成员c的值。
在主函数中,先定义派生类的对象c,然后调用setc()对c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。

单项选择题
单项选择题