问题 问答题

使用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++类知识的一个综合考核。对虚函数的定义格式及继承类构造函数的定义格式请多加注意。

填空题
选择题