问答题 请使用VC6或使用[答题]菜单打开考生文件夹proj2下的工程proj2。此工程中包含一个源程序文件main.cpp,其中有类Point(“点”)、Circle(“圆”)和主函数main的定义。请在横线处填写适当的代码并删除横线,以实现上述定义,此程序的正确输出结果应为: [30,50] center=[120,89];radius=2.7 注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//********found********”。 #include <iostream> #include <iomanip> using namespace std; class Point{ //点类 public: //构造函数参数xValue为点的X坐标,yValue为点的Y坐标 //**********found********** Point ( int xValue = 0, int yValue = 0) {}; void setX ( int xValue ) { x = xValue; } int getX() { return x; } void setY( int yValue ) { y = yValue; } int getY () { return y; } //声明虚函数Disp() //********** found********** {cout << '[' << getX() << ", " <<getY() <<']'; }; private: int x; // x 坐标 int y; // y 坐标 }; class Circle : public Point{ //圆类 public: //构造函数参数xValue为圆心的X坐标,yValue为圆心的Y坐标 Circle( int xValue=0, int yValue=0, double radiusValue=0.0) //********** found********** ______{} void setRadius (double radiusValue) {radius = ( radiusValue < 0.0 ? 0.0 : radiusValue); } double getRadius () { return radius; } double getDiameter () { return 2 * getRadius (); } double getCircumference() { return 3.14159 * getDiameter() ;} //计算周长 double getArea () { return 3.14159 * getRadius () * getRadius (); } //计算面积 void Disp() //输出圆对象 { cout << "center = "; Point::Disp(); cout << "; radius = " << getRadius(); } private: double radius; //圆半径 }; int main () { Point point ( 30, 50 ); Circle circle( 120, 89, 2.7 ); Point * pointPtr; pointPtr = &point; pointPtr -> Disp (); cout << endl; pointPtr = &circle; //将派生类对象 pointPtr -> Disp (); return 0; }
【正确答案】(1)x(xValue),y(yValue) (2)virtual voidDisp() (3):Point(xValue, yValue),radius(radiusValue)
【答案解析】[考点] 本题考查Point类及其派生类Circle类,其中涉及构造函数、成员函数和虚函数。 [解析] (1)主要考查考生对构造函数的掌握,使用成员列表初始化。 (2)主要考查考生对虚函数的掌握,先看语句注释:声明虚函数Disp()。可知该函数为虚函数,注意虚函数要使用关键字virtual。 (3)主要考查考生对构造函数的掌握,使用成员列表初始化。