问题 问答题

使用VC6打开考生文件夹下的工程MyProj11。此工程包含一个源程序文件 MyMain11.cpp。程序中定义了3个类A、B和C,但类C的定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①类C是基类A和B公有派生来的。请在注释“//* *1* *”之后添加适当的语句。
②完成构造函数C(int k)定义,采用初始化列表的方式使基类A私有成员a初始化为k-2,基类B的私有成员b初始化为k+2,类C的私有成员c初始化为k。请在注释“//* *2* *”之后添加适当的语句。
③完成类Derived的成员函数disp()的类体外的定义。函数disp()中要分别显式调用基类A、B的disp()函数,然后要输出私有成员c的值。请在注释“//* *3* *”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain11.cpp清单如下;
//MyMain11.cpp
#include <iostream>
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;
disp ( )

cout<<b<<", ";

;
//* * *1* * *

private:
int c;
public:
//* * *2* * *
void disp();
;
void c::disp()

//* * *3* * *

int main ( )

C obj(10);
obj.disp();
return 0;

答案

参考答案:
①clas C:public B,public A
②C(int k):A(k-2),B(k+2),c(k){}
③A: :disp(); B: :disp();cout<<c<<end1;

解析: 程序中定义了3个类A、B和C,其中类C是由类A和类B共同派生而来的。因此,派生类C的构造函数不仅负责初始化派生类对象的基类成员,还要对派生类C的新增成员c进行初始化。对于第3处要求显式调用基类的disp()函数,可采用作用域分辨符“::”来调用基类的成员函数。

单项选择题
单项选择题