使用VC6打开考生文件夹下的工程test29_3。此工程包含一个test29_3.cpp,其中定义了二维坐标类Coordinate和三维坐标类ThreeDCoord,其中ThreeDCoord类由Coordinate类public派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类Coordinate的保护数据成员x和y,它们都是int型的数据,代表二维坐标的横纵坐标值。请在注释“//**1 **”之后添加适当的语句。
(2)根据类Coordinate定义后的成员函数Display的实现,补充该函数在类Coordinate定义体内的声明,Display为二维坐标类的虚函数。请在注释“//**2**。”之后添加适当的语句。
(3)完成二维坐标类Coordinate的构造函数,将参数a和b分别赋值给数据成员x和y。请在注释“//**3**”之后添加适当的语句。
(4)根据ThreeDCoord类构造函数的声明,补充ThreeDCoord构造函数的实现,参数a和b通过调用基类的构造函数来初始化基类的数据成员x和y,c赋值给数据成员2。请在注释“//**4**”之后添加适当的语句。
输出结果如下;
[1,2]
[3,4,5]
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件tese9_3.cpp清单如下:
#include<iostream.h>
class Coordinate
protected:
//** 1 **
public:
Coordinate(int a=0, int b=0);
//** 2 **
;
Coordinate::Coordinate(int a, int b)
//** 3 **
void Coordinate::Display() const
cout << ’[’ << x << ", "<< y << ’]’ << end1;
class ThreeDCoord:public Coordinate
int z;
public:
ThreeDCoord(int a=0, int b=0, int c=0);
virtual void Display() const;
;
//** 4 **
void ThreeDCoord::Display() const
cout << ’[’ << x << ", "<< y << ", "<< z << ’]’ << end1;
void main ( )
Coordinate c(1, 2);
ThreeDCoord t(3, 4, 5);
c.Display ();
t.Display ();
参考答案:
(1)
int x;
int y;
(2)
virtual void Display()const;
(3)
x=a;
y=b;
(4)
ThreeDCoord::ThreeDCoord(int a,int b,int c):Coordinate(a,b)
解析: 本题主要考查考生对类数据成员的定义、构造函数、派生类及虚函数的理解,是C++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。