问答题
使用VC6打开考生文件夹下的工程MyProj15。此工程包含一个源程序文件MyMain15.cpp。程序中定义了3个类A、B和C,但类的定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①类Inherit是类Base的公有派生类。请在注释“//* *1* *”之后添加适当的语句。
②完成类Inherit成员函数setvalue(int a,int b,int c,int d)的定义,此函数实现的功能是将基类成员x、y、z和派生类的数据成员m的值分别设置成a、b、c和d。请在注释“//* *2* *”之后添加适当的语句。
③完成类Inherit成员函数display()的类体外定义,此函数实现的功能是以“,,,,”的格式将x、y、z和m的值输出到屏幕上。请在注释“//* *3* *”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain15.cpp清单如下:
//Mymain15.cpp
#include<iostream>
using namespace std;
class Base
private:
int x;
protected:
int y;
public:
int z;
void setx(int i)
x=i;
int getx()const
return x;
;
//* * *1* * *
private:
int m;
public:
void setvalue(int a,int b,int c,int d)
//* * *2* * *
void display()const;
;
//* * *3* * *
int main()
Inherit A;
A.setvalue(1,2,3,4);
A.display();
return 0;
【正确答案】
①class Inherit:private Base
②setx(a);y=b;z=c;m=d;
③void Inherit::display()const{cout<<getx()<<","<<y<<","<<z<<","<<m<<end1;}
【答案解析】[解析] 类Inherit是类Base的公有派生类,即其派生方式为public。类Inherit的成员函数setvalue()实现的功能是将基类成员x、y、z和派生类的数据成员m的值分别设置成a、b、c和d。由于基类成员x为私有,所以可以在函数setvalue()中通过调用基类公有成员setx()函数给x赋值。其他数据成员可以直接赋值。在类体外定义类的常成员函数display()时要注意带上修饰符const,因为const也是函数的组成部分。