使用VC6打开考生文件夹下的工程MyProj13。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。
②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。
③完成类shapes的成员函数setvalue(int d,int w)的定义,shapes类的数据成员x和y分别被设置成d和w。请在注释“//* *3* *”之后添加适当的语句。
④将类shapes的成员函数void disp()设置成纯虚函数。请在注释“//* *4* *”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain13.cpp清单如下:
//MyMain13.cpp
#include<iostream>
using namespace std;
class shapes
//* * * 1 * * *
public:
//* * * 2 * * *
void setvalue(int d,int w)
//* * * 3 * * *
//* * * 4 * * *
;
class square : public Shapes
public:
void disp()
cout<<x*y<<end1;
;
int main()
shapes*ptr;
square s1;
ptr=&s1;
ptr->setvalue(10,5);
ptr->disp();
return 0;
参考答案:
①protected:int x,y;
②shapes(int d=0,int w=0) {x=d;y=w;}
③x=d;y=w;
④virtual void disp()=0;
解析:
本题中基类shapes是一个抽象类(拥有纯虚函数disp()),其构造函数中要设置默认参数值0。并且在类体中要将成员函数disp()声明成纯虚函数。在主函数中定义了抽象类的对象指针ptr,并给它赋值派生类square的对象s1,然后进行赋值和输出的操作。