问答题
请使用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)主要考查考生对构造函数的掌握,使用成员列表初始化。